键值观察通知依赖于NSObject的两个方法:
- willChangeValueForKey
- didChangeValueForKey
在一个被观察属性发生改变之前,willChangeValueForKey:一定会被调用,这就会记录旧的值。而当改变发生后,didChangeValueForKey:会被调用,继而objectServeValueForKey:ofObject:change:content:也会被调用。如果可以手动实现这些调用,就可以实现“手动触发”了。
@property (nonatomic, strong) NSDate *now;
- (void)viewDidLoad {
[super viewDidLoad];
// “手动触发self.now的KVO”,必写。
[self willChangeValueForKey:@"now"];
// “手动触发self.now的KVO”,必写。
[self didChangeValueForKey:@"now"];
}
网友评论