我想创建一个NSOperation的子类,需要自定义-isReady
,即符合KVO标准的属性的getter。我的覆盖将对我的自定义测试和super
的方法版本执行布尔 - AND。但是覆盖仍然必须保持KVO合规性。那怎么样?
答案 0 :(得分:1)
没有什么特别的,因为合成属性符合KVC和KVO:
财产:
@property (nonatomic, readwrite, getter=isReady) BOOL ready;`
实施:
@synthesize ready;
- (BOOL) isReady {
// your custom logic here.
}
对于NSOperation
子类,这些属性的KVO通知将是自动的。您不需要再做任何事情(您不需要调用will / didSetValueForKey)。
如果NSOperation
设置访问者(例如isReady
或isFinished
)的行为取决于其他属性或关键路径,请务必使用KVO注册它们:
+ (NSSet *) keyPathsForValuesAffectingIsFinished {
NSSet *result = [NSSet setWithObject:@"finished"];
return result;
}