为啥我不能在 Obj-C 中声明像“newVariable”这样的变量? [复制]
Posted
技术标签:
【中文标题】为啥我不能在 Obj-C 中声明像“newVariable”这样的变量? [复制]【英文标题】:Why can't I declare a variable like "newVariable" in Obj-C? [duplicate]为什么我不能在 Obj-C 中声明像“newVariable”这样的变量? [复制] 【发布时间】:2013-03-12 15:41:48 【问题描述】:我遇到的错误
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
)
【问题讨论】:
因为这些命名约定是由编译器强制执行的。 所以它在 obj -c 编码中还有其他用途? 因为 new for 约定用于返回被调用者保留的对象的方法 解释见这里:***.com/questions/6327448/… 【参考方案1】:声明一个属性会综合两个访问器(getter/setter)方法:
-(NSString*)newString;
-(void)setNewString:(NSString*)newString;
Objective-C 有一个由编译器强制执行的内存管理命名约定。以new
(也称为“alloc”、“copy”、“mutableCopy”)开头的方法需要返回一个将由调用者“拥有”的对象。请参阅documentation。生成的访问器方法不符合规则。
【讨论】:
【参考方案2】:此命名约定已在 Objective-C 中使用。您将需要使用类似简单的旧myString
来完成这项工作。这是编译器的事情 - 编译器是挑剔的。
【讨论】:
以上是关于为啥我不能在 Obj-C 中声明像“newVariable”这样的变量? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Apache 忽略我的 VirtualHost 声明?