请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

向编译后得到的类增加实例变量

老师,编译后的类已经注册在 runtime 中了,已经完成了实例变量的布局,所以不能向编译后得到的类增加实例变量,可以这样回答么

正在回答

1回答

JerseyCafe 2019-03-14 17:31:37

向分类中直接添加属性, 只会生成 get set  方法, 但是不会真正生成实例变量, 所以在访问的时候会报错, 因为编译期结束之后 本类结构体, 内存大小等都已经确定下来, 直接进行修改会破坏掉原有的类的内部结构。

可以通过 runtime 动态关联的方式来进行添加。 其也不会真正改变原有类内部结构, 内部原理是一个全局容器来进行存储相应的关联属性。


0 回复 有任何疑惑可以回复我~
  • 提问者 lsyyyy #1
    那是说可以通过关联对象向编译后的类添加属性吗
    回复 有任何疑惑可以回复我~ 2019-03-14 17:34:53
  • JerseyCafe 回复 提问者 lsyyyy #2
    嗯 是的、 实际原理就是 在运行时 调用了关联对象 Api 将响应的 实例变量绑定到 全局 Map 中,供当前类访问。
    回复 有任何疑惑可以回复我~ 2019-03-14 18:18:22
  • 提问者 lsyyyy 回复 JerseyCafe #3
    好的,谢谢
    回复 有任何疑惑可以回复我~ 2019-03-14 18:38:44
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信