KVO 和 KVC

1、KVC

NSKeyValueCoding,即键值编码

//常用的 setter、getter 方式
        Person *p = [[Person alloc] init];
        p.name = @"张三";  //setter
        p.age = 20;  //setter 
        NSString *name = p.name; //getter
        Int age= p.age;//getter
  
等价于
//KVC 方式赋值
    [p setValue:@"张三" forKey:@"name"];
    [p setValue:@20 forKey:@"age"];

   NSString *name =[p valueForKey:@"name"];
   Int age= [p valueForKey:@"name"].int; 

2、KVO

KeyValue Observe,即键值观察。观察者模式

//添加观察者
        Person *p = [[Person alloc] init];
        p.name = @"张三";  //setter
        [p addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew context:nil]; 
        p.name = @"李四";  //通知改变
       
//如果观察的值有改变,得调用下面的方法
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context  
{  
    if ([keyPath isEqualToString:@"name"]) {  
         //name被改变了 
    } 
}

//记得销毁观察者
- (void)dealloc  
{  
    [p removeObserver:self forKeyPath:@"name" context:nil];  
}  
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • KVC kvc全称key-value-coding(键值编码),通常是用来给某一个对象的属性进行赋值,比如有一个p...
    珍此良辰阅读 375评论 0 3
  • 一、KVO(Key-Value-Observing) 键值观察者模式,说白了就是当你监听的值发生变化时,会收到对应...
    Ryan_RH阅读 319评论 0 0
  • 一,概述 KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就...
    HZX大雄阅读 250评论 0 0
  • “感恩”是中华民族的传统美德,“滴水之恩,涌泉相报”“谁言寸草心,报得三春晖”,这是祖先为我们留下的教诲。...
    叮咚_4fed阅读 216评论 0 0
  • 文章来源:百度UED 内容:交互设计入门 注意力是指人的心理活动指向和集中于某种事物的能力。通常我们在地铁上拿着手...
    脱离高级趣味的货阅读 1,162评论 1 9

友情链接更多精彩内容