【问题标题】:Property requires method to be defined属性需要定义方法
【发布时间】:2013-02-19 17:51:20
【问题描述】:

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

类.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 和默认 Apple LLVM 编译器 4.2,@properties 应该是自动合成的。

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

【问题讨论】:

  • 你已经有setXyz: 方法了吗?
  • P.S.对于任何未来的读者,请记住检查拼写。当属性被称为precedence时,很容易做类似setPredence:的事情

标签: objective-c properties


【解决方案1】:

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

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

【讨论】:

  • 确实如此!这就是问题所在,我不知道 NSManagedObject 类的这种特殊性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-29
相关资源
最近更新 更多