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

来源:5-8 动态方法解析相关面试问题&面试总结

lsyyyy

2019-03-12

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

写回答

1回答

JerseyCafe

2019-03-14

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

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


0
3
lsyyyy
回复
JerseyCafe
好的,谢谢
2019-03-14
共3条回复

资深大牛带你深度剖析ios高级面试

从BAT/TMD名企真题入手,结合源码及应用,构建完整iOS知识体系

1749 学习 · 600 问题

查看课程