我应该避免使用new来初始化我的对象吗?

时间:2013-07-31 18:24:25

标签: ios cocoa-touch

最近我被告知Apple不鼓励使用新的,谷歌的iOS编码标准也有这样的说法:

  

不要调用NSObject类方法new,也不要在子类中重写它。相反,使用alloc和init方法来实例化保留的对象。   现代Objective-C代码显式调用alloc和init方法来创建和保留对象。由于很少使用新的类方法,因此更难以检查代码以进行正确的内存管理。

为什么审查代码以确保正确的内存管理更加困难?

1 个答案:

答案 0 :(得分:4)

我希望简化代码审查的引用仅仅意味着代码的人类读者可能不会注意到“新”这个词,因为他们的眼睛会扫描寻找alloc-init调用的代码。

在Objective-C中,“new”一词是调用alloc和init的快捷方式。但是你不能传递论据;你正在调用no-arg构造函数。如果以后以现在想要调用其他构造函数并传递参数的方式更改代码,则需要将“new”更改为alloc-init。这是很常见的,以至于它首先避免称为“新”。

通过调用alloc-init调用'new'没有任何好处。 “新”字仅在Objective-C中,因为其他语言(如Java)使用该关键字。