IOS开发知识点

iOS Class的结构

2020-04-07  本文已影响0人  KOLee

一、底层结构

    // Class ISA;
    isa_t isa; //isa指针
    Class superclass;
    cache_t cache;    //方法缓存cache       
    class_data_bits_t bits; 
}
  1. class_rw_t里面的 methods、 properties、protocols 是二维数组,是可读可写的,包含了类的初始内容、分类的内容
  2. class_ro_t里面的baseMethodList、baseProtocols、ivars、baseProperties是一维数组,是只读的,包含了类的初始内容

二、method_t 是对方法\函数的封装

struct method_t {
    SEL name; // 函数名
    const char *types; // 编码(返回值 返回类型)
    IMP imp; // 指向函数的指针(函数地址)
}
  1. IMP代表函数的具体实现


    图片.png
  2. SEL代表方法名\函数名,一般叫选择器,底层结构跟char*类似
  1. types包含了函数返回值,参数编码的字符串


    图片.png

三、方法缓存:

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


    图片.png
  2. 缓存查找 = selector(方法名)为_key&_mask 获取到对应的_imp

四、方法查找:

上一篇 下一篇

猜你喜欢

热点阅读