美文网首页
能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实

能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实

作者: FRAJ | 来源:发表于2019-05-13 14:52 被阅读0次
    • 不能向编译后得到的类中怎家实例变量;
    • 能向运行时创建的类中添加实例变量;

    原因:

    • 因为编译后的类已经注册在 runtime 中,类结构体中的 objc_ivar_list 实例变量的链表和 instance_size 实例变量的内存大小已经确定,同时 runtime 会调用 class_setIvarLayoutclass_setWeakIvarLayout 来处理 strongweak引用,所以不能向存在的类中添加实例变量;
    • 运行时创建的类是可以添加实例变量,调用 class_addIvar 函数。但是得在调用 objc_allocatePair 之后,objc_registerClass 之前,原因同上。

    相关文章

      网友评论

          本文标题:能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实

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