为什么我不能在Obj-C中声明像“newVariable”这样的变量?

时间:2013-03-12 15:41:49

标签: iphone ios objective-c ipad variables

我遇到错误

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

2 个答案:

答案 0 :(得分:31)

声明属性合成两个访问器(getter / setter)方法:

-(NSString*)newString;
-(void)setNewString:(NSString*)newString;

Objective-C有一个由编译器强制执行的内存管理命名约定。以new(也称为“alloc”,“copy”,“mutableCopy”)开头的方法需要返回将由调用者“拥有”的对象。请参阅documentation。生成的访问器方法不遵循该规则。

答案 1 :(得分:1)

此命名约定已在Objective-C中使用。您将需要使用简单的旧myString之类的东西来完成这项工作。这是编译器的事情 - 编译器挑剔。