2

被认为基本上总是[UIView new];使用指定的初始化程序,当使用而不是创建新的 viewInstances 时我觉得有点脏[[UIView alloc] initWithFrame:CGRectZero];

什么理由这样做吗?有什么实际区别吗?如果您正在创建一个没有任何帧信息的新视图实例,那么回退是否会[UIView new];简单地删除大量代码?我的猜测是这[[UIView alloc] initWithFrame:CGRectZero];实际上是在引擎盖下调用的(?)

4

2 回答 2

7

[UIView new]是一种方便的替换方法[[UIView alloc] init]因此[[UIView alloc] initWithFrame:CGRectZero]

有什么理由不这样做吗?

在这种情况下,我会说“是”。您不能保证在这种情况下init等同于。initWithFrame:CGRectZero

我的猜测是……

您可能是正确的,并且两者的行为相同;这不是未来的证据。像这样的实施细节可能会改变。

1.可能会有所不同,我不知道initWithFrame:引擎盖下的作用。

于 2014-03-06T10:17:23.103 回答
0

我最近想知道同样的事情[UIView new]。在新的代码示例中使用它时,我遇到了 James 的回答中涉及的问题。一旦我恢复到[[UIView alloc] initWithFrame:CGRectZero].至少我知道新UIView继承的属性,这些问题就解决了。

于 2018-03-07T00:47:13.523 回答