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

标签 ios cocoa-touch

<分区>

最近有人告诉我苹果不鼓励使用新的,谷歌的 iOS 编码标准也有这样的说法:

Do not invoke the NSObject class method new, nor override it in a subclass. Instead, use alloc and init methods to instantiate retained objects. Modern Objective-C code explicitly calls alloc and an init method to create and retain an object. As the new class method is rarely used, it makes reviewing code for correct memory management more difficult.

为什么它会使审查正确内存管理的代码变得更加困难?

最佳答案

我希望提到易于代码审查只是意味着代码的人类读者可能不会注意到"new"这个词,因为他们的眼睛会扫描代码以寻找 alloc-init 调用。

在 Objective-C 中,“new”这个词是调用 alloc 和 init 的快捷方式。但是你不能传递论点;您正在调用无参数构造函数。如果您稍后以现在想要调用其他构造函数之一并传递参数的方式更改代码,则需要将“new”更改为 alloc-init。这很常见,也是避免首先调用“new”的另一个原因。

与调用 alloc-init 相比,调用“new”没有任何优势。 "new"一词仅在 Objective-C 中出现,因为其他语言(例如 Java)使用该关键字。

关于ios - 我应该避免使用 new 来初始化我的对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17978044/

相关文章:

ios - 如何将原始 NSData 和一些 NSStrings 发布到我的服务器?

ios - WatchKit 调用 webview

c++ - iOS Voip 唤醒电话

Objective-C 如何检测来自多个 subview 的多点触控

ios - 当应用程序从暂停状态返回时隐藏键盘

objective-c - 在进行消息转发时避免编译器警告

ios - 在 Storyboard 中,UIScrollview 无法正常使用自动调整大小。没有代码如何管理?

ios - 以编程方式在设备上为 passkit 创建通行证?

ios - 新手: about ios/objective -c variable definition in a class

javascript - 帮助在 UIWebView 中使用 Javascript 代码