[关闭]
@iwanglong 2019-08-02T02:45:38.000000Z 字数 1079 阅读 263

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

iOS


回答

类的初始信息本来其实是存储在class_ro_t中的,并且ro本来是指向cls->data()的,也就是说bits.data()得到的是ro,但是在运行过程中创建了class_rw_t,并将cls->data指向rw,同时将初始信息ro赋值给rw中的ro。最后在通过setData(rw)设置data。那么此时bits.data()得到的就是rw,之后再去检查是否有分类,同时将分类的方法,属性,协议列表整合存储在class_rw_t的方法,属性及协议列表中。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注