Semantic Issue: Property's synthesized getter follows Cocoa naming convention for returning 'owned'
来源:互联网 发布:360软件管家mac版 编辑:程序博客网 时间:2024/05/22 01:03
@interface ViewController : UIViewController { NSString *newTitle;}@property (strong, nonatomic) NSString *newTitle;
I'm currently using the iOS 5 SDK trying to develop my app. I'm trying to make an NSString a property, and then to synthesize it in the .m file (I have done this before with no issues). Now, I came across this: "Semantic Issue: Property's synthesized getter follows Cocoa naming convention for returning 'owned' objects."@synthesize newTitle;
answer:
You take ownership of an object if you create it using a method whose name begins with “alloc”, “new”, “copy”, or “mutableCopy”.
A property named
newTitle
, when synthesised, yields a method called-newTitle
, hence the warning/error.-newTitle
is supposed to be a getter method for thenewTitle
property, however naming conventions state that a method whose name begins withnew
returns an object that’s owned by the caller, which is not the case of getter methods.You can solve this by:
Renaming that property:
@property (strong, nonatomic) NSString *theNewTitle;
Keeping the property name and specifying a getter name that doesn’t begin with one of the special method name prefixes:
@property (strong, nonatomic, getter=theNewTitle) NSString *newTitle;
Keeping both the property name and the getter name, and telling the compiler that, even though the getter name starts with
new
, it belongs to thenone
method family as opposed to thenew
method family:#ifndef __has_attribute#define __has_attribute(x) 0 // Compatibility with non-clang compilers#endif#if __has_attribute(objc_method_family)#define BV_OBJC_METHOD_FAMILY_NONE __attribute__((objc_method_family(none)))#else#define BV_OBJC_METHOD_FAMILY_NONE#endif@interface ViewController : UIViewController@property (strong, nonatomic) NSString *newTitle;- (NSString *)newTitle BV_OBJC_METHOD_FAMILY_NONE;@end
Note that even though this solution allows you to keep
newTitle
as both the property name and the getter name, having a method called-newTitle
that doesn’t return an object owned by the caller can be confusing for other people reading your code.
- Semantic Issue: Property's synthesized getter follows Cocoa naming convention for returning 'owned'
- Semantic Issue: Property's synthesized getter follows Cocoa naming convention for returning 'owned'
- Property's synthesized getter follows Cocoa naming convention for returning 'owned' objects (2012-01
- Property's synthesized getter follows Cocoa naming convention for returning 'owned' objects
- property's synthesized getter follows Cocoa naming convention for returning 'owned' objects
- property's synthesized getter follows Cocoa naming convention for returning 'owned' objects
- Property's synthesized getter follows Cocoa naming convention for returning 'owned' objects
- warning: property's synthesized getter follows Cocoa naming convention for returning 'owned' object
- property's synthesized getter follows Cocoa naming convention for returning 'owned' objects
- Property's synthesized getter follows Cocoa naming convention for returning 'owned' objects
- property's synthesized getter follows Cocoa naming convention for returning 'owned' objects
- property's synthesized getter follows Cocoa naming convention for returning 'owned' objects
- error: property's synthesized getter follows Cocoa naming convention for returning 'owned' objects
- Error解决:Property's synthesized getter follows Cocoa naming convention for returning 'owned'
- Property's synthesized getter follows Cocoa naming convention for returning 'owned' objects
- error: property's synthesized getter follows Cocoa naming convention for returning 'owned' objects I
- property's synthesized getter follows Cocoa naming convention for returning 'owned' objects
- iOS开发 error: property's synthesized getter follows Cocoa naming convention for returning 'owned' obj
- [Leetcode] Longest Valid Parentheses
- android开发在软件平台上得到更多人的肯定
- 诺基亚游戏——贪吃蛇
- Button 左对齐
- 零碎python学习笔记(二) - 20121205
- Semantic Issue: Property's synthesized getter follows Cocoa naming convention for returning 'owned'
- SAS学习步骤和参考书
- 统计软件SAS入门教程:SAS程序初步
- 第九章 从推销员干起
- Struts2工作流程
- javascript 客户端能力检测
- 发挥搜索引擎和工具书的大作用
- 自己写的写日志类
- UVA 11234