不能向编译后的类添加实例变量?运行时创建类中则可以
因为编译后的类,在编译时已经确定,运行不可修改
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.pngweak对象存储原理和销毁为什么会置nil
objc_destructInstance --> sideTable_clearDeallocating()-->
weak_clear_no_lock-->refer == nil -->移除entry
2C0E0DDC-9887-4DBE-B6D4-A3605B825A2F.png
网友评论