zoukankan      html  css  js  c++  java
  • runtime相关面试

    结构体objc_object就是我们常用的id类型

    objc_object包括

    isa_t

    isa操作相关

    弱引用相关

    关联对象相关

    内存管理相关

    objc_class结构体对应我们平常使用的Class

    objc_class继承自objc_object

    包括

    Class superClass;

    cache_t cache;//方法缓存

    class_data_bits_t bits;//属性 方法

    共用体isa_t有2种:

    指针型isa 在64系统里,有64位的0或1组成的值

    isa的值代表class的地址(64位)

    非指针型isa

    isa的值的部分代表class的地址(例如33位 44位)

    isa的指向

    实例的isa指向类对象(调用实例方法实际是通过isa指针在类对象中查找)

    类对象的isa指向元类对象(调用类方法实际是通过isa指针在元类对象中查找)

    cache_t

    快速查找方法执行函数(方法缓存,减少对类的方法列表遍历)

    可增量扩展的哈希表结构(类似数组,bucket_t封装的结构体,两个属性:方法选择器的名称key和无类型函数指针IMP)

    局部性原理的最佳应用(调用频次高的方法放到缓存,提高命中率)

    class_data_bits_t

    class_data_bits_t主要是对class_rw_t的封装

    class_rw_t(读写)代表了类相关的读写信息(例如分类的属性,方法) 对class_ro_t的封装(read only)

    class_ro_t代表类相关的只读信息

    class_rw_t包括:

    class_ro_t

    protocols(继承 list_array_tt 二维数组)

    properties(继承 list_array_tt 二维数组)

    methods(继承 list_array_tt 二维数组) 例如第一维数组是每个分类 第二维数组是每个分类里面的方法method_t结构体

    class_ro_t包括

    name

    ivars(一维数组)

    properties(一维数组)

    protocols(一维数组)

    methidList(一维数组) 元素是 method_t

    结构体 method_t包含

    SEL name; 名称

    const char *types; 返回值 参数

    IMP imp; 函数体

    const char *types

    基础数据结构

  • 相关阅读:
    错误: error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. 的处理方法
    C语言习题
    嵌入式芯片STM32F407
    c语言课后习题
    求方程式的根
    C语言课后习题
    LINUX常用指令
    在 pythonanywhere 上搭建 django 程序(Virtualenv+python2.7+django1.8)
    Git远程操作详解
    ./configure,make,make install的作用
  • 原文地址:https://www.cnblogs.com/WellLin/p/12715876.html
Copyright © 2011-2022 走看看