美文网首页
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