如何覆盖符合KVO标准的属性的getter?

时间:2014-08-20 09:28:17

标签: objective-c cocoa key-value-observing nsoperation

我想创建一个NSOperation的子类,需要自定义-isReady,即符合KVO标准的属性的getter。我的覆盖将对我的自定义测试和super的方法版本执行布尔 - AND。但是覆盖仍然必须保持KVO合规性。那怎么样?

1 个答案:

答案 0 :(得分:1)

没有什么特别的,因为合成属性符合KVC和KVO:

财产:

@property (nonatomic, readwrite, getter=isReady) BOOL ready;`

实施:

@synthesize ready;

- (BOOL) isReady {
   // your custom logic here.
}

对于NSOperation子类,这些属性的KVO通知将是自动的。您不需要再做任何事情(您不需要调用will / didSetValueForKey)。 如果NSOperation设置访问者(例如isReadyisFinished)的行为取决于其他属性或关键路径,请务必使用KVO注册它们:

+ (NSSet *) keyPathsForValuesAffectingIsFinished {
    NSSet   *result = [NSSet setWithObject:@"finished"];
    return result;
}