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/
  • 相关阅读:
    随机色块
    JQ命令汇总
    JQ选择器
    cookie
    tab切换
    Ajax跨域
    RocksDB介绍:一个比LevelDB更彪悍的引擎
    谷歌的诀窍:如何取消验证码
    Ruby on Rails创始人DHH谈如何进行混合移动APP开发
    SequoiaDB 架构指南
  • 原文地址:https://www.cnblogs.com/supersr/p/4829527.html
Copyright © 2011-2022 走看看