面试题总结

作者: Nbm | 来源:发表于2020-06-30 14:58 被阅读0次

    NSObject的本质

    1.一个NSObject在内存中就是一个结构体
    • 分配16个字节的内存,但实际只用了8个字节(成员变量所占内存)
    • int类型占4个字节,doule类型,long类型,String类型占8个字节
    • 内存对齐,OC对象占的内存最少为16个字节
    2.对象的isa指针指向哪里?
    • instance对象的isa指针指向class对象
    • class对象的isa指针指向元类对象(meta-class)
    • 元类对象的isa指针指向基类的meta-class对象
    3.OC的类信息存放哪里?
    • 对象方法,属性,成员变量,协议信息存放在类(class)对象
    • 类方法存放在元类对象(meta-class)
    • 成员变量的具体值存放在instance对象中

    KVO的本质

    • 利用runtimeAPI动态创建一个子类,并且让instance对象的isa指针指向这个子类,当修改instance对象的属性时,会调用Foundation的_NSetXXValueAndNotify函数
    • 调用_NSetXXValueAndNotify函数的willChangeValueForKey,父类的setter方法,didChangeValueForKey,didChangeValueForKey内部会触发(oberser)的监听方法(observeValueForKeyPath:ofObject:change:context)

    相关文章

      网友评论

        本文标题:面试题总结

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