美文网首页
Objective-C学习总结二 kvo kvc

Objective-C学习总结二 kvo kvc

作者: cj小牛 | 来源:发表于2020-03-04 15:31 被阅读0次

    KVO

    • kvo 全称是Key-Value Observing 俗称键值监听,可以用来监听一个对象属性值的改变。
    C48BFA40-41B7-4846-BA1B-2B9590A27709.png
    未使用KVO监听
    683CD78E-670E-4A7A-B54E-75D527C87985.png
    使用了KVO监听
    9F2333C9-D8CB-4C11-AC62-A5DA79093320.png

    NSSetValueAndNOtify的内部实现

          [self willChangeValueForkey:@"age"];
            //原来的setter实现
          [self didChangeValueForkey:@"age"];
    

    调用willChangeValueForKey;
    调用原来的setter实现
    调用didChangeValueForKey;
    didChangeValueForKey:回调用observer的observerValueForKeyPath:ofObject:change:context方法。

    KVC

    KVC 全称是Key-Value Coding,俗称键值编码,可以赢一个key来访问属性。
    常见的API

        -(void)setValue:(id)value forKeyPath:(NSString*)keyPath;
        -(void)setValue:(id)value forKey:(NSString*)key;
        -(id)valueForKeyPath:(NSString*)keyPath;
        -(id)valueForKey:(NSString*)key;
    
    • setValue:forkey:的原理


      8716F928-DFC4-47A3-AD26-9DC0267562F5.png

      accessInstanceVariablesDirectly 方法返回默认值为YES

    • valueForKey:的原理


      B8143DD9-DD7B-4D68-A85A-EF2AF7D459FC.png

    相关文章

      网友评论

          本文标题:Objective-C学习总结二 kvo kvc

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