KVO 键值监听 / KVC 键值编码

KVO(Key-Value Observing)本质是监听set方法,重写set方法。

过程:

1、动态生成一个 NSKVONotifying_Class 的子类

2、改变父类的 isa 指针,指向动态创建的子类

3、添加 setName 方法(重写)

4、保存观察者(关联属性)


void setName (id self, SEL _cmd, NSString *str) 

{

    1、保存当前的Class

    2、将self指针指向父类

    3、调用父类的setName

    4、拿出观察者

    5、通知外界

    6、改回子类

}


KVC(Key-Value Coding):直接使用一个或一串字符串标识符去访问,操作类的属性。

- (nullable id)valueForKey:(NSString*)key; 的调用顺序:

先调用相关方法:

getKey > Key > isKey

如果没有相关方法,就会调用下面这个方法:

+(BOOL)accessInstanceVariablesDirectly。

如果返回NO,程序就报错;如果返回YES(默认返回YES),就去找相关变量。顺序如下:0

_key > _isKey > key > isKey

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,837评论 1 32
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,891评论 8 265
  • KVC KVC定义 KVC(Key-value coding)键值编码,就是指iOS的开发中,可以允许开发者通过K...
    暮年古稀ZC阅读 6,509评论 2 9
  • 最近发了好几个关于英语写作校对的工具,汇总一下。 ​​​​ Grammaly:O网页链接,可以实现实时语法检查,你...
    HELLOTREE1阅读 5,090评论 3 1
  • //第一天笔记 ## 质量需求 1,项目的性能 2,项目的负载能力 3,项目的数据安全 4,项目高可用 5,项目的...
    保川阅读 1,378评论 0 1