使用[UIView new]的任何警告;?

时间:2014-03-06 10:15:52

标签: ios uiview cgrect designated-initializer

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

是否有任何原因? 有什么实际的区别吗?如果您正在创建一个没有任何框架信息的新视图实例,那么[UIView new];的回退不会简单地消除掉许多代码错误吗?我的猜测[[UIView alloc] initWithFrame:CGRectZero];实际上是在引擎盖下调用的(?)

2 个答案:

答案 0 :(得分:7)

[UIView new]是替换[[UIView alloc] init]的便捷方法,因此 1 [[UIView alloc] initWithFrame:CGRectZero]不同

  

有没有理由不这样做?“

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

  

我的猜测是......

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

1。 可能会有所不同,我不知道initWithFrame:在幕后做了什么。

答案 1 :(得分:0)

我最近想知道关于[UIView new]的同样的事情。在新的代码示例中使用它时,我遇到了Jame的答案所涵盖的问题。这些问题在我恢复到[[UIView alloc] initWithFrame:CGRectZero].之后得到了解决。至少我知道新UIView继承了哪些属性。