美文网首页与时俱进的IT
UI(二十三)KVC和KVO

UI(二十三)KVC和KVO

作者: 社会主义顶梁鹿 | 来源:发表于2018-07-30 17:57 被阅读0次

    #pragma mark---KVC---

     KVC:key(键)-value(值)-code(编码)   

     键值编码->通过key(字符串)改变value的值进行编码

     可以改变对象的全局变量(公开的,不能写在延展里面)的值、属性值

     字典转模型->通过KVC来实现

     变量或者属性的名字必须和key的字符串统一 

     KVC是通过字符串(key)来找到变量进行赋值

    KVC是通过属性的名字当做一个字符串(key)来给属性赋值

    赋值公式: [对象名 setValue:值 forKey:与属性名相同的字符串];

    取值公式: [对象名 valueForKey:与属性名相同的字符串]

    @() 转化为 NSNumber类型

    键路径:与文件路径相似,表示键的层级关系 使用.来分隔

    赋值公式: [对象名 setValue:值forKeyPath:键路径];

    取值公式: [对象名 valueForKeyPath:键路径];

    content 是infoModel的属性 infoModel是Model的属性

    content的键路径:@"infoModel.content"

    #pragma mark---KVO----

     KVO:key(键)-value(值)-observer(观察者)  

     键值观察者:通过对一个对象属性或者变量值的观察来做出对应的动作 只要key对应的值发生改变就会告诉观察者新旧值的改变 

     通过key来判断是哪一个KVO

     *条件:

     1、有观察者、观察的对象

     2、只要值发生改变 就去触发 告诉观察者值已经发生改变

     3、*不再需要观察这个对象的时候移除观察者 不移除就会崩溃

     *给被观察的对象添加观察者:

      [被观察的对象 addObserver:selfforKeyPath:@"观察的属性"options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld  context:nil];

     *值发生改变触发:(keyPath 观察的哪个属性、object可以用于传值、change 里面是字典包含发生改变的新值和旧值)

     - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context

     *移除观察者:[被观察的对象removeObserver:self forKeyPath:@"观察的属性"];

    相关文章

      网友评论

        本文标题:UI(二十三)KVC和KVO

        本文链接:https://www.haomeiwen.com/subject/dpzfvftx.html