zoukankan      html  css  js  c++  java
  • supersr--KVO/KVC

    KVO内部实现原理

    1.KVO是基于runtime机制实现的.

    2.当某个类的对象第一次被观察是,系统就会在运行期动态地创建该类的一个派生类,在这个派生类中重写基类中任何被观察属性的set方法.派生类在被重写的setter方法实现真正的通知机制(-->>NSKVONotifying_类名);

    苹果不希望这个机制暴露在外部。除了setter,这个动态生成的子类同时也重写了-class方法,依旧返回原先的class!如果不仔细看的话,被KVO过的object看起来和原先的object没什么两样。

    KVC的价值
    1.可以访问私有成员变量的值
    2.可以间接修改私有成员变量的值(替换系统自带的导航栏.tabbar)
     
    列如:在.h里面声明一个私用属性(@pivate),在.m里面去访问就得要用KVC去访问,
    KVC首先它会去调用属性的get方法,找不到就取访问系统生成的下划线的成员属性;
     
    valueForKey:   >>只能访问当前对象的属性
    valueForKryPath:  >>包含了valueForKey的功能 >>>能利用运算符一层一层网内部访问属性
    valueForKeypath: >> 可以这样访问 >> [p valueForKeyPath:@“p.dog.name”] 而valueForKey: 则不能; 
     
    http://tech.glowing.com/cn/implement-kvo/
  • 相关阅读:
    ubuntu16.04安装jdk1.8(java1.8)
    OJDBC版本区别 [ojdbc14.jar,ojdbc5.jar和ojdbc6.jar的区别]
    Eclipse 的 jsp 页面代码格式化
    php自动加载
    swift 遍历
    swift 赋值判断
    C语言开发环境配置
    C语言之分配
    C语言之指针
    IOS之swift第一课基础代码
  • 原文地址:https://www.cnblogs.com/supersr/p/4829527.html
Copyright © 2011-2022 走看看