ios方法缓存

🪐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

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

友情链接更多精彩内容