//1.創(chuàng)建觀察者對象拯杠;創(chuàng)建被觀察者對象
TRBank *bank = [TRBank new];
//2.使用KVC方式給被觀察者對象設(shè)置余額
[bank setValue:@1000.5 forKey:@"accountBalance"];
//3.被觀察者調(diào)用addObserver方法拌牲,添加觀察動作
/* 參數(shù)一:指定觀察對象的屬性名字(屬性路徑)
參數(shù)二:給定觀察的枚舉值(接收到通知的時候凳忙,獲取新值/老值/初始值)
描述:注冊一個觀察者對象Register
NSKeyValueObservingOptionInitial:當給定余額初始值的時候氧急,自動發(fā)送通知
*/
[bank addObserver:bank forKeyPath:@"accountBalance" options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld | NSKeyValueObservingOptionInitial) context:nil];
//4.需要使用KVC指定變化的值
[bank setValue:@2000 forKey:@"accountBalance"];
//
// //移除觀察者(在觀察者對象和被觀察者對象釋放之前民珍,移除觀察者對象)
[bank removeObserver:bank forKeyPath:@"accountBalance"];
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context {
if([keyPath isEqualToString:@"accountBalance"]) {
NSLog(@"%@ %@",[change valueForKey:NSKeyValueChangeNewKey],[change valueForKey:NSKeyValueChangeOldKey]);
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者