美文网首页
OC底层原理 08

OC底层原理 08

作者: 花白少年梦 | 来源:发表于2020-09-14 23:01 被阅读0次

    类原理分析

    1. 成员变量与类方法的归属?
      2.成员变量与属性的区别&周边拓展补充
      3.machoView辅助分析
      4.类方法的存储
      属性和成员变量?

    为什么copy与strong有区别?

    实例变量?

    实例变量:特殊的成员变量(类的实例化)

    因为ro是只读 编译期生成的

    方法: sel imp函数指针
    imp 函数指针:指向函数的实现

    Type Encoding

    @encode(char)

    @16@0:8 (void16idSel8)

    @返回值
    16: 总字节数
    @:Id id self,SEL _cmd
    0:从0开始
    :从当前位置
    8:往后数8位字节

    @ id类型

    copy & strong & weak 区别
    setProperty
    1:LLVM ivar - 编码处理

    就是把指针偏移到name的位置去 然后把这个value存进去

    什么是ivar?

    记住copy、strong、weak底层调用的那个方法,然后通过LLVM找

    LLDB: image list读取整个镜像文件

    0x20 = 32

    Machoview使用介绍

    method_list_t

    类方法归属?

    通过元类取出类方法。

    因为类对象是元类的对象,所以类方法存在于类对象里面

    存类的ivars里? 什么存类的ivars里?

    得到一个类方法相当于得到一个元类的实例化方法

    元类为什么有sayHappy 类方法 0 1,当找到后不在递归,直接出去

    实例方法存在类里,类方法存在元类里

    解答

    @interface LGPerson: NSObject
    {

    成员变量
    NSObject *objc; //objc 成员变量 - 实例变量
    NSString *nickName; //nickName 成员变量

    }

    实例变量是某个类的实例的意思 成员变量包含实例变量 它还可以是其它的类型

    isa走向:继承才有父子关系,元类才有isa

    copy和strong,assign的区别是啥

    相关文章

      网友评论

          本文标题:OC底层原理 08

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