内部结构图
imageclass_rw_t 里面的methods、properties、protocols是二维数组,是可读可写的,包含了类的初始内容、分类的内容
imageclass_ro_t 里面的baseMethodList、baseProtocols、ivars、baseProperties是一维数组,是只读的,包含了类的初始内容
imagemethod_t是对方法/函数的封装
struct_method_t {
SEL name; //函数名字
const char *types;//(返回值,参数类型)
IMP imp;//函数入口地址
}
Class内部结构中有个方法缓存(cache_t),用散列表(哈希表)来缓存曾经调用过的方法,可以提高方法的查找速度
struct_cache_t {
struct bucket_t *_buckets; //哈希表
mask_t _mask;
mast_t _occipied
}
struct bucket_t {
cache_key_t _key; //SEL
IMP imp; //函数地址
}
网友评论