KVO使用及注意点

KVO(Key-Value-Observer)是iOS中一个重要的概念,与协议(Protocol)、通知中心(NSNotification)、代码块(Block)等一起构起iOS的==通知体系==。
KVO主要提供对对象的属性变化的监听,包括对象属性的初始化、对象的修改,通过KVO我们可以获得对象属性修改的即时通知,以此来做一些程序的必要动作。

使用篇

KVO可以对当前对象的属性进行监听,同时也可以对其他对象的属性进行监听。
使用方法

//添加监听
[被监听对象 addObserver:监听者 forKeyPath:@"被监听对象属性" options:NSKeyValueObservingOptionNew context:nil];

//移除监听
[被监听者 removeObserver:监听者 forKeyPath:@"被监听对象属性" context:nil];

//获取监听事件改变
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context {
    
}
注意点

KVO添加监听和移除监听必须成对出现,并且在被监听对象销毁前,需要移除被监听对象的监听事件,否则在被监听对象销毁的时候导致程序崩溃。崩溃提示信息:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'An instance *** of class Observer was deallocated while key value observers were still registered with it.

Demo : KVO使用及注意点

添加新评论

电子邮件地址不会被公开,评论内容可能需要管理员审核后显示。