Class 窥探

2018-11-08  本文已影响0人  取个名字真困难

内部结构图

image

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

image

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

image

method_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; //函数地址

  }
上一篇 下一篇

猜你喜欢

热点阅读