首页 > 其他 > 详细

KVO的内部实现原理

时间:2015-03-25 18:42:09      阅读:178      评论:0      收藏:0      [点我收藏+]

KVO的内部实现

 

 1 // 刚创建person时,person的isa指针执行person
 2     HMPerson *person = [[HMPerson alloc] init];
 3     
 4     person.name = @"HM";
 5     person.age = 10;
 6     
 7     // 为person添加监听器
 8     // 下面方法过后,person的isa指针指向了NSKVONotifying_HMPerson对象(默认生成person的子类)
 9     [person addObserver:self forKeyPath:@"age" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil];
10     
11     self.person = person;
12     
13     // 子类NSKVONotifying_HMPerson会重写(void)setAge:(int)age方法,在方法中调用监听方法
14 //    - (void)setAge:(int)age
15 //    {
16 //        [super setAge:age];
17 //        
18 //        //    [self observeValueForKeyPath:@"age" ofObject:<#(id)#> change:<#(NSDictionary *)#> context:<#(void *)#>]
19 //    }

 

NSKVONotifying_HMPerson

1 // 被监听对象的监听属性改变时,就会调用这个方法
2 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
3 {
4     NSLog(@"%@", change);
5 }

 

KVO的内部实现原理

原文:http://www.cnblogs.com/fkunlam/p/4366302.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!