今天写程序,无意间出来一个这样的警告。
指向这一行:@property (retain, nonatomic) NSString *newTitle;
Apple LLVM complier 4.1 Warning.Semantic Issue: Property's synthesized getter follows Cocoa naming convention for returning 'owned' objects
经过查阅资料,得到下面结果:The compiler version you’re using follows the memory management rules for declared properties, too.
A property named newTitle,when synthesised, yields a method called -newTitle, hence the warning/error. -newTitle is supposed to be a getter method for the newTitle property, however naming conventions state that a method whose name begins with new returns an object that’s owned by the caller, which is not the case of getter methods.
简单的说就是你的编译器在声明属性的时候,遵循内存管理原则,为属性变量命名的时候,不要用到
“alloc”, “new”, “copy”, or “mutableCopy”这些word,因为这些属性在synthesized的时候它的getter 函数是newObject格式的。所以产生了这个警告。注意不要混淆。
官方文档在此,其他都是浮云。
本文探讨了在使用Objective-C编程时遇到的一个关于属性声明的警告。该警告源于编译器对属性合成规则与Cocoa命名约定之间的冲突,具体表现为使用new等特定词汇作为属性名时产生的歧义。
359

被折叠的 条评论
为什么被折叠?



