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

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

作者: Adam_潜 | 来源:发表于2018-12-09 17:08 被阅读9次

    1.不能向编译后得到的类增加实例变量
    2.能向运行时创建的类中添加实例变量
    解释:
    1.编译后的类已经注册在runtime中,类结构体中的objc_ivar_list实例变量的链表和instance_size实例变量的内存大小已经确定,runtime会调用class_setvarlayout或class_setWeaklvarLayout来处理strong weak引用.所以不能向存在的类中添加实例变量
    2.运行时创建的类是可以添加实例变量,调用class_addIvar函数.但是的在调用objc_allocateClassPair之后,objc_registerClassPair之前,原因同上.

    作者:七秒记忆的鱼儿
    链接:https://www.jianshu.com/p/f9eb6b315c08
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

    相关文章

      网友评论

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

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