我的印象是,这是在基类中声明readonly
属性并在子类中使其成为readwrite
的正确模式。我想我以前做过类似的事情,所以我可能会遗漏一些东西。
// Signal.h
@interface Signal : NSObject
@property (readonly) NSUInteger version;
@end
@interface MutableSignal : Signal
@property (readwrite) NSUInteger version;
@end
我的.m文件:
// Signal.m
@interface Signal () {
@protected
NSUInteger _version;
}
@end
@implementation Signal
@synthesize version = _version;
- (NSUInteger)version
{
@synchronized (self) {
return _version;
}
}
@end
@implementation MutableSignal
- (void)setVersion:(NSUInteger)version
{
@synchronized (self) {
_version = version;
}
}
@end
我在readwrite
MutableSignal
声明中收到以下警告
自动属性合成不会合成属性'版本&#39 ;;它将由其超类实现,使用@dynamic来确认意图
我尝试在实施中添加@dynamic
,但它没有帮助。
答案 0 :(得分:1)
解决方案是在@dynamic
实施中使用MutableSignal
,而不是Signal
。