美文网首页
iOS Class相关数据结构

iOS Class相关数据结构

作者: 再好一点点 | 来源:发表于2021-11-19 19:39 被阅读0次

    1. Class的结构

    Class的结构.png

    2. class_rw_t

    class_rw_t里面的methods、properties、protocols是二维数组,是可读可写的,包含了类的初始内容、分类的内容

    class_rw_t.png

    3. class_ro_t

    class_ro_t里面的baseMethodList、baseProtocols、ivars、baseProperties是一维数组,是只读的,包含了类的初始内容


    class_ro_t.png

    4. method_t

    method_t.png

    5. Type Encoding

    iOS中提供了一个叫做@encode的指令,可以将具体的类型表示成字符串编码

    Type Encoding.png

    6. 方法缓存

    Class内部结构中有个方法缓存(cache_t),用散列表(哈希表)来缓存曾经调用过的方法,可以提高方法的查找速度
    缓存查找
    objc源码的objc-cache.mm文件内
    方法bucket_t * cache_t::find(cache_key_t k, id receiver)

    方法缓存.png

    @dynamic

    @dynamic是告诉编译器不用自动生成getter和setter的实现,需要用户自己实现。

    相关文章

      网友评论

          本文标题:iOS Class相关数据结构

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