打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
kvc和kvo


   

       
        分类:
            Object-c基础
       

    2014-02-23 11:42
    41人阅读
    评论(0)
    收藏
    举报
   



   


oc为操作对象属性提供了两种方法来间接操作属性,kvc就是利用键值对来改写对象的属性值,类似字典,而kvo则提供了监控对象的某个属性值发生改变。





kvc and kvo


  1. Person *p=[[Person alloc]init];  
  2.         PersonObserver *ob=[[PersonObserver alloc] init];  
  3.           
  4.         Book *b=[[Book alloc]init];  
  5.         b.name=@"abc";  
  6.           
  7.         Book *b1=[[Book alloc]init];  
  8.         b1.name=@"ios";  
  9.           
  10.         Book *b2=[[Book alloc]init];  
  11.         b2.name=@"java";  
  12.           
  13.         p.books=@[b,b1,b2];  
  14.           
  15.         p.book=b1;  
  16.           
  17.         //设置属性值  
  18.         [p setValue:@"zhangsan" forKey:@"name"];  
  19.         //键路径设置  
  20.         [p setValue:@"iso" forKeyPath:@"book.name"];  
  21.         //获取值  
  22.         NSString *name= [p valueForKey:@"name"];  
  23.           
  24.         NSString *bookName=[p valueForKeyPath:@"book.name"];  
  25.         //获取对象属性集合  
  26.         NSMutableArray *array=[p valueForKeyPath:@"books.name"];  
  27.           
  28.         //添加监听 <span style="font-family: Arial, Helvetica, sans-serif;">options属性发生改变前后的值</span>  
  29.         [p addObserver:ob forKeyPath:@"name" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:@"传入参数"];  
  30.         //移除监听  
  31.         [p removeObserver:ob forKeyPath:@"name"];  



充当属性的监听器,在监听器类的内部实现方法


  1. -(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(voidvoid *)contex  
  2. {  
  3.     NSLog(@"name发生改变,传入的参数是%@,keypath=%@,object=%@,change=%@",contex,keyPath,object,change);  
  4.   
  5. }  
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
iOS KVO & KVC
iOS下KVO的使用以及一些实现细节
iOS: 消息通信中的Notification&KVO
[深入浅出Cocoa]详解键值观察(KVO)及其实现机理
厦门IOS开发之KVC、KVO、通知(转)
有趣的KVC-几行代码打造一个万能容器对象
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服