我最近尝试编译一个较旧的Xcode项目(过去可以正常编译),现在我看到很多这种形式的错误:
error: writable atomic property 'someProperty' cannot pair a synthesized setter/getter with a user defined setter/getter
导致这些错误的代码模式始终如下所示:
// Interface:
@property (retain) NSObject * someProperty;
// Implementation:
@synthesize someProperty; // to provide the getter
- (void)setSomeProperty:(NSObject *)newValue
{
//..
}
我可以看到为什么会生成错误。我告诉编译器合成我的属性访问器(getter和setter),然后紧接着我手动覆盖setter。那个代码总是闻起来有点臭。
那么,执行此操作的正确方法是什么?如果我使用@dynamic
而不是@synthesize
,则也必须编写getter。那是唯一的方法吗?
atomic
属性中发生吗?如果是原子属性,则最好使吸气剂/设定剂对保持锁定策略同步。如果一个部分是合成的而另一部分是自定义代码,则这很难。