runtime OC

Class方法缓存:cache_t

Posted on 2021-10-11,1 min read

简单了解一下,OC在调用方法的时候,底层的实现逻辑是什么?

  • 首先我们窥探下struct objc_class的结构
objc_class结构.png
  • Class内部结构中有个方法缓存(cache_t),用**散列表(哈希表)**来缓存曾经调用过的方法,可以提高方法的查找速度
5Vfw5t.png

散列表:以空间来换时间(根据得出的index进行分配地址,即可能存在未使用的地址);根据 _key 和 _mask 进行位运算 得出 index (_key & _mask -> index);如果未被占用,则使用,如已被占用,则重新生成 (大致思路:i ? i - 1 : mask)


下一篇: isa指针在64位系统后为什么要用位域方式去计算?→

loading...