OC的特性是:
消息分发,是动态调用过程,就是在编译时并不知道消息的接收对象,只有在运行时才会才会根据函数的名称找到对应的函数来调用,,在运行过程中都是转成了runtime的C语言代码,真正的boss是runtime。
类的组成在:
isa指针;;super_class父类;;cache方法混存区;;Version类的版本信息;;objc_method_list存放类的成员方法
调用方法过程:
例如当我们去调用respondsToSelector:这个方法时,调用对象首先会先根据isa找到对应的类(class),先去chahe中查找这个方法是否缓存过,没有的话再去遍历methodLists,如果还没有就根据super_class找到父类,再去像之前那样查找这个方法,知道super_class为nil,就无法找到这个方法了,则返回NO。
常见作用:
1.动态的添加对象的成员变量和方法,修改属性值和方法
2.动态交换两个方法的实现
3.实现分类也可以添加属性
4.实现NSCoding的自动归档和解档
5.实现字典转模型的自动转换
6.动态创建一个类(比如KVO的底层实现)
网友评论