属性需要定义方法

时间:2013-02-19 17:51:21

标签: objective-c properties

我正在将代码从非ARC转换为ARC,并删除了一些不必要的@synthesize调用。 一个特定的类开始为某些属性发出警告:

Class.h

@property (strong, nonatomic) NSString *xyz;

但在建设时,我会收到警告。

Property 'xyz' requires method 'xyz'to be defined - use @synthesize, @dynamic or provide a method implementation in this class implementation

我认为使用Xcode 4.6和Default Apple LLVM编译器4.2,@properties应该是自动合成的。

如何告诉编译器自动合成属性? 我是否必须使用特定的项目配置来删除此警告?

1 个答案:

答案 0 :(得分:37)

此属性是否在NSManagedObject子类上? NSManagedObject正确禁用自动合成,因为大多数声明的属性都应为@dynamic

这是通过NS_REQUIRES_PROPERTY_DEFINITIONS宏放置在@interface NSManagedObject之前完成的,该宏扩展为__attribute__((objc_requires_property_definitions))。这也可以在其他类上使用,但NSManagedObject是我所知道的唯一这样做的框架类。