Objective-C不能以new开头命名属性

ARC是在Xcode4.2推出的方便内存管理的一个特性,支持OS10.6及iOS4以后版本。引入ARC之后,相对应的内存管理使用方面做了必要的调整,这里不一一赘述;其中有一项就是文章题目说的,为了与手动内存管理交互,不能以new开头命名属性(非必须的情况下就不要使用了,官方文档肯定有其道理),除非重新定义getter方法。代码如下:

官方示例:

//Won't work

@property NSString *newTitle;

//Works:

@property(getter=theNewTitle) NSString *newTitle;

这个原因的本质是编译器工作时,会对newTitle属性生成一个_newTitle方法,这个_newTitle应该就是newTitle的getter方法,但是命名约定声明一个名称以new返回的方法是调用者的实例对象,这就和getter方法相矛盾,类似的还有alloc、copy,都不能以其为属性的开头。

原文地址:https://www.cnblogs.com/xuanyishare/p/8658399.html