美文网首页
iOS Class相关数据结构

iOS Class相关数据结构

作者: 再好一点点 | 来源:发表于2021-11-19 19:39 被阅读0次

1. Class的结构

Class的结构.png

2. class_rw_t

class_rw_t里面的methods、properties、protocols是二维数组,是可读可写的,包含了类的初始内容、分类的内容

class_rw_t.png

3. class_ro_t

class_ro_t里面的baseMethodList、baseProtocols、ivars、baseProperties是一维数组,是只读的,包含了类的初始内容


class_ro_t.png

4. method_t

method_t.png

5. Type Encoding

iOS中提供了一个叫做@encode的指令,可以将具体的类型表示成字符串编码

Type Encoding.png

6. 方法缓存

Class内部结构中有个方法缓存(cache_t),用散列表(哈希表)来缓存曾经调用过的方法,可以提高方法的查找速度
缓存查找
objc源码的objc-cache.mm文件内
方法bucket_t * cache_t::find(cache_key_t k, id receiver)

方法缓存.png

@dynamic

@dynamic是告诉编译器不用自动生成getter和setter的实现,需要用户自己实现。

相关文章

网友评论

      本文标题:iOS Class相关数据结构

      本文链接:https://www.haomeiwen.com/subject/ubpstrtx.html