摘要: iOS Category 添加属性实现原理 关联对象 RunTime为Category动态关联对象 使用RunTime给系统的类添加属性,首先需要了解对象与属性的关系。对象一开始初始化的时候其属性为nil,给属性赋值其实就是让属性指向一块存储内容的内存,使这个对象的属性跟这块内存产生一种关联。 那么 阅读全文
posted @ 2019-01-08 20:58 ShaoYL 阅读(623) 评论(0) 推荐(0) 编辑
摘要: iOS Category实现原理 (补充) load 和 initialize load 1. load方法会在程序启动就会调用,当装载类信息的时候就会调用。 调用顺序看一下源代码。在 objc loadmethod.m 文件中实现 2. 通过源码我们发现是优先调用类的load方法,之后调用分类的l 阅读全文
posted @ 2019-01-08 16:46 ShaoYL 阅读(156) 评论(0) 推荐(0) 编辑
摘要: iOS Category实现原理 实现原理 1. 我们不主动引入 Category 的头文件,Category 中的方法都会被添加进主类中。我们可以通过 performSelector: 等方式 对 Category 中的相应方法进行调用 a) 将 Category 和它的主类(或元类)注册到哈希表 阅读全文
posted @ 2019-01-08 16:13 ShaoYL 阅读(333) 评论(0) 推荐(0) 编辑
摘要: KVO 的实现原理 1. KVO是关于runtime机制实现的 2. 当某个类的对象属性第一次被观察时,系统就会在运行期动态地创建该类的一个派生类,在这个派生类中重写基类中任何被观察属性的setter方法。派生类在被重写的setter方法内实现真正的通知机制 3. 如果原类为Person,那么生成的 阅读全文
posted @ 2019-01-08 13:38 ShaoYL 阅读(257) 评论(0) 推荐(0) 编辑