向编译后得到的类增加实例变量
来源:5-8 动态方法解析相关面试问题&面试总结

lsyyyy
2019-03-12
老师,编译后的类已经注册在 runtime 中了,已经完成了实例变量的布局,所以不能向编译后得到的类增加实例变量,可以这样回答么
写回答
1回答
-
向分类中直接添加属性, 只会生成 get set 方法, 但是不会真正生成实例变量, 所以在访问的时候会报错, 因为编译期结束之后 本类结构体, 内存大小等都已经确定下来, 直接进行修改会破坏掉原有的类的内部结构。
可以通过 runtime 动态关联的方式来进行添加。 其也不会真正改变原有类内部结构, 内部原理是一个全局容器来进行存储相应的关联属性。
032019-03-14
相似问题