KVO:Key-Value Observing(KVO观察者模式)它提供一种机制,当指定的对象(下文中的status)的属性被修改后,则对象就会接受到通知。
//添加KVO监听
[self.player addObserver:self forKeyPath:@"status" options:NSKeyValueObservingOptionNew context:nil];
//处理KVO监听 当self.player的状态status变化时回调
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
change:(NSDictionary *)change context:(void *)context{
if (object == self.player && [keyPath isEqualToString:@"status"]) {
if (self.player.status == AVPlayerStatusReadyToPlay) {
[self.player play];
} else if (self.player.status == AVPlayerStatusFailed) {
NSLog(@"%@",self.player.error);
} else if (self.player.status == AVPlayerItemStatusUnknown) {
NSLog(@"AVPlayer Unknown");
}
}
}
键值编码KVC
比如说,一个 Person 对象
p setValue:newName forKey:@"name"];
NSString *originalName = [p valueForKey:@"name"];