Class 窥探

内部结构图

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

  }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1 Block机制 (Very Good) Block技巧与底层解析 http://www.jianshu.com...
    Kevin_Junbaozi阅读 4,191评论 3 48
  • 众所周知,block可以封装一个匿名函数为对象,并捕获上下文所需的数据,并传给目标对象在适当的时候回调。正因为将抽...
    吸血鬼de晚餐阅读 3,061评论 0 1
  • 一.block的本质 block本质是一个OC对象。封装了函数调用地址和函数调用环境(参数) 二.block的变量...
    蔚尼阅读 465评论 0 1
  • 面试题 block的原理是怎样的?本质是什么? __block的作用是什么?有什么使用注意点? block的属性修...
    xx_cc阅读 14,075评论 10 77
  • 一、主要需要解决问题 (一)本次活动的总体目标和意义 (二)时间,场地 (三)宣传 (四)摄像 (五)工作的核心团...
    琴筝阅读 636评论 0 1

友情链接更多精彩内容