【问题标题】:Any caveats using [UIView new];?使用 [UIView new]; 有什么注意事项吗?
【发布时间】:2014-03-06 10:15:52
【问题描述】:
被认为基本上总是使用指定的初始化程序,当使用[UIView new]; 而不是[[UIView alloc] initWithFrame:CGRectZero]; 创建新的viewInstances 时,我觉得有点脏?
这有任何原因不吗?
有什么实际区别吗?如果您正在创建一个没有任何帧信息的新视图实例,那么回退到[UIView new]; 是否会简单地删除很多代码?我的 猜测 是 [[UIView alloc] initWithFrame:CGRectZero]; 实际上是在后台调用的(?)
【问题讨论】:
标签:
ios
uiview
cgrect
designated-initializer
【解决方案1】:
[UIView new] 是替换[[UIView alloc] init] 的便捷方法,因此它1 不同于[[UIView alloc] initWithFrame:CGRectZero]
有什么理由不这样做吗?`
在这种情况下,我会说“是”。在这种情况下,您不能保证init 等同于initWithFrame:CGRectZero。
我的猜测是……
有可能你是对的,并且两者的行为相同;这不是未来的证据。像这样的实施细节可能会改变。
1. 可能会有所不同,我不知道 initWithFrame: 在幕后做了什么。
【解决方案2】:
我最近对[UIView new] 也有同样的疑惑。在新的代码示例中使用它时,我遇到了 James 的回答中涵盖的问题。一旦我恢复到[[UIView alloc] initWithFrame:CGRectZero].,这些问题就解决了。至少我知道新的UIView 继承了哪些属性。