UIButton - alloc initWithFrame: vs. buttonWithType:(UIButton - alloc initWithFrame: 与 buttonWithType:)
问题描述
给定(任意):
CGRect frame = CGRectMake(0.0f, 0.0f, 100.0f, 30.0f);
以下两个代码片段有什么区别?
What's the difference between the following two code snippets?
1.
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = frame;
2.
UIButton *button = [[[UIButton alloc] initWithFrame:frame] autorelease];
推荐答案
我认为它们是等价的.哈哈!诡计问题你这个鬼鬼祟祟的小混混!
I think they're equivalent. Haha! Trick question you sneaky little punk!
-buttonWithType:返回一个自动释放的UIButton对象.
-buttonWithType:returns an autoreleasedUIButtonobject.
+[NSObject alloc]默认标量实例变量为0,所以buttonType应该是0,或 UIButtonTypeCustom.
+[NSObject alloc] defaults scalar instance variables to 0, so buttonType should be 0, or UIButtonTypeCustom.
优点 &缺点
您可能会争辩说,使用
-buttonWithType:并明确设置buttonType会更清晰,并且在 Apple 更改UIButtonTypeCustom是1而不是0(这绝对不会发生).
You could argue that it's clearer to use
-buttonWithType:and setbuttonTypeexplicitly and that it's safer in case Apple changesUIButtonTypeCustomto be1instead of0(which will most certainly never happen).
另一方面,你也可以争辩说它很清楚 &使用 -initWithFrame 足够安全.此外,还有许多 Xcode 示例项目,例如TheElements"和BubbleLevel"使用这种方法.一个优点是您可以在应用程序主线程的运行循环耗尽其自动释放池之前显式释放 UIButton.而且,这就是为什么我更喜欢选项 2.
On the other hand, you could also argue that it's clear & safe enough to use -initWithFrame. Plus, many of the Xcode sample projects, such as "TheElements" & "BubbleLevel," use this approach. One advantage is that you can explicitly release the UIButton before the run loop for your application's main thread has drained its autorelease pool. And, that's why I prefer option 2.
这篇关于UIButton - alloc initWithFrame: 与 buttonWithType:的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:UIButton - alloc initWithFrame: 与 buttonWithType:
- 使用自动布局向 UIScrollView 添加动态大小的视图 2022-01-01
- 类似于 Mail.app 的 iPad 模态视图控制器? 2022-01-01
- SetOnItemSelectedListener上的微调程序错误 2022-01-01
- Xcode 7.3 中带有 UILabel 的 UIStackView 2022-01-01
- GPS状态的广播接收器? 2022-01-01
- 在 Iphone SDK 的导航栏上添加多个按钮 2022-01-01
- 网上有没有好的 UIScrollView 教程? 2022-01-01
- URL编码Swift iOS 2022-01-01
- 如何在 iPhone 模拟器中重置 NSUserDefaults 数据? 2022-01-01
- UITextView 内容插图 2022-01-01
