使用@dynamic确认意图

时间:2015-08-20 00:07:22

标签: objective-c

我的印象是,这是在基类中声明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,但它没有帮助。

1 个答案:

答案 0 :(得分:1)

解决方案是在@dynamic实施中使用MutableSignal,而不是Signal