美文网首页
ios方法缓存

ios方法缓存

作者: 大鹅ne | 来源:发表于2020-07-08 12:43 被阅读0次

🪐Class内部结构中有个方法缓存(cache_t),用散列表(哈希表)来缓存曾经调用过的方法,可以提高方法的查找速度

///

struct cache_t{

  struct  bucket_t  * buckets;  //散列表 —>bucket

  mask_t  _mask;  //散列表长度  -1

  mask_t  _occupied  //已经缓存的方法数量

}

struct  bucket_t{

cache_key_t  key ;//SEL作为key

IMP  _imp; //函数的内存地址

}

///

🪐缓存查找

objc-cache.mm

bucket_t*cache::find(cache_key_t k , Id receiver)

@selector(studentTest) & _mask = 2

@selector(personTest) & _mask = 2

@selector(goodStudentTest) & _mask = 7

空间换时间

f(key) == index

相关文章

网友评论

      本文标题:ios方法缓存

      本文链接:https://www.haomeiwen.com/subject/evoqcktx.html