給蘋果文檔稍微翻譯下:
? ? ? Key-value observing is a mechanism that enables an object to be notified directly when a property of another object changes. Key-value observing (or KVO) can be an important factor in the cohesiveness of an application. It is a mode of communication between objects in applications designed in conformance with the Model-View-Controller design pattern.?
? KVO 是一種可以讓一個(gè)對(duì)象可以監(jiān)聽到另一個(gè)對(duì)象屬性變化的機(jī)制。KVO是一個(gè)可以提高APP內(nèi)聚的重要的因素。這是一個(gè)在MVC設(shè)計(jì)模式下的對(duì)象之間的通信方式羹蚣。
如何使用KVO呢?在哪里可以用到KVO? 我們可以通過KVO監(jiān)聽tableView的contentOffset等屬性來做一些事情,例如可以改變tableView導(dǎo)航的顏色柴底,alpha值。
首先粱胜,對(duì)需要監(jiān)聽的對(duì)象添加觀察者
[self.tableView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew context:nil];
然后實(shí)現(xiàn)監(jiān)聽屬性值的回調(diào)方法
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void *)context
{
}
最后需要在 dealloc方法中 remove掉監(jiān)聽者
- (void)dealloc{
[self.tableView ?removeObserver:self forKeyPath:@"contentOffset" context:nil];
}