iOS Class相关数据结构

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相关数据结构)