KVO,即:Key-Value Observing,它提供一種機制,當指定的對象的屬性被修改後,則對象就會接受到通知。它在控制層和模型層之間的消息溝通中發揮很大作用。controller層的對象觀察model層對象的屬性,從而使得view對象可以通過controller層間接觀察model的屬性,解耦model和view。
例如demo工程IOSKvoUse
初始化:model對象將當前的viewController作為自己score屬性的觀察者。
1,在viewController中
[m_studentKVO addObserver:selfforKeyPath:@"m_stuScore"options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOldcontext:nil];
2,用戶點擊界面的button按鈕,會使得model數據改變。
[m_studentKVO setValue:[NSStringstringWithFormat:@"%d",score]forKey:@"m_stuScore"];
3, 由於viewController注冊成為觀察者,故而觀察者的observeValueForKeyPath會被調用,通知viewControllermodel數據被更新了。
4, 在觀察者的回調方法中,可以刷新相應的界面。