KVO簡介:
KVO,即:Key-Value Observing,它提供一種 間接機制,當(dāng)指定的對象的屬性被修改后,對象就會接收到通知厦章。簡單的說,就是每次指定的被觀察的對象的屬性被修改后,KVO就會自動通知相應(yīng)的觀察者.這個機制可以達到最大程度的解耦合。所以極力推薦使用汗侵。
使用方法:
Mac系統(tǒng)框架支持KVO,使用起來非常的方便;
1,注冊,指定被觀察者的屬性,方法如下:
//這是注冊的?方法,寫在viewDidload里
- (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(void *)context;
2,回調(diào)方法:
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
change:(NSDictionary *)change context:(void *)context
{
? ?//在這??下面的方法來接收傳進來的值
? - (id)valueForKey:(NSString *)key;
}
3,移除觀察:
- (void)removeObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath;
KVO注意事項:
1,注冊KVO的對象必須和接收通知的對象保持一致,不可以再次初始化一個的對象,因為初 始化就意味著重新開辟一塊內(nèi)存地址,這樣在被觀察對象的屬性發(fā)生改變時,系統(tǒng)不會執(zhí)行回 調(diào)方法群发。也就是說接受不到事件通知。
2,注冊和移除必須成對出現(xiàn)宫屠。只要注冊確定不再使用的時候就必須移除滑蚯。
KVO代碼 github 托管地址
https://github.com/liukunpengiOS/KVOSample
git clone 地址
https://github.com/liukunpengiOS/KVOSample.git