我遇到错误
error: property's synthesized getter follows Cocoa naming convention for returning 'owned' objects
/Users/.../ViewController.h:12:40:
note: property declared here
@property (nonatomic, retain)NSString *newString;
为什么我不能在开头的变量名中使用 new ? (如newString
)
答案 0 :(得分:31)
声明属性合成两个访问器(getter / setter)方法:
-(NSString*)newString;
-(void)setNewString:(NSString*)newString;
Objective-C有一个由编译器强制执行的内存管理命名约定。以new
(也称为“alloc”,“copy”,“mutableCopy”)开头的方法需要返回将由调用者“拥有”的对象。请参阅documentation。生成的访问器方法不遵循该规则。
答案 1 :(得分:1)
此命名约定已在Objective-C中使用。您将需要使用简单的旧myString
之类的东西来完成这项工作。这是编译器的事情 - 编译器挑剔。