美文网首页
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