美文网首页
RunTime 添加实例变量/Forward/weak置空

RunTime 添加实例变量/Forward/weak置空

作者: 行走在北方 | 来源:发表于2020-05-13 20:02 被阅读0次

    不能向编译后的类添加实例变量?运行时创建类中则可以

    因为编译后的类,在编译时已经确定,运行不可修改
    class_ro_t  在类只读中已经确定了
    ro结构体中的ivar_list_t也是不可以修改,并且它的instanceSize决定了创建对象时需要的空间的大小
      运行时添加时,必须要在objc_allocateClassPair 和 objc_registerClassPair之间调用class_addIvar
    

    Objc_msgForward函数是做什么的,直接调用它将会放生什么?

      用于消息转发的一个IMP,也就是函数地址
      当一个对象在方法列表中么有找到要实现的方法时,则会调用objc_msgForward方法函数
    

    关联对象Associate方法关联对象,需要在dealloc中释放?

    C44A3FE6-F0F5-40FB-AC7D-9883309F37D2.png

    weak对象存储原理和销毁为什么会置nil

        objc_destructInstance --> sideTable_clearDeallocating()-->
        weak_clear_no_lock-->refer == nil -->移除entry
    
    2C0E0DDC-9887-4DBE-B6D4-A3605B825A2F.png

    相关文章

      网友评论

          本文标题:RunTime 添加实例变量/Forward/weak置空

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