简单了解一下,OC在调用方法的时候,底层的实现逻辑是什么?
- 首先我们窥探下struct objc_class的结构
- Class内部结构中有个方法缓存(cache_t),用**散列表(哈希表)**来缓存曾经调用过的方法,可以提高方法的查找速度
散列表:以空间来换时间(根据得出的index进行分配地址,即可能存在未使用的地址);根据 _key 和 _mask 进行位运算 得出 index (_key & _mask -> index);如果未被占用,则使用,如已被占用,则重新生成 (大致思路:i ? i - 1 : mask)
阅读量
loading...