采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,编译后的类已经注册在 runtime 中了,已经完成了实例变量的布局,所以不能向编译后得到的类增加实例变量,可以这样回答么
向分类中直接添加属性, 只会生成 get set 方法, 但是不会真正生成实例变量, 所以在访问的时候会报错, 因为编译期结束之后 本类结构体, 内存大小等都已经确定下来, 直接进行修改会破坏掉原有的类的内部结构。
可以通过 runtime 动态关联的方式来进行添加。 其也不会真正改变原有类内部结构, 内部原理是一个全局容器来进行存储相应的关联属性。
那是说可以通过关联对象向编译后的类添加属性吗
嗯 是的、 实际原理就是 在运行时 调用了关联对象 Api 将响应的 实例变量绑定到 全局 Map 中,供当前类访问。
好的,谢谢
登录后可查看更多问答,登录/注册
从BAT/TMD名企真题入手,结合源码及应用,构建完整iOS知识体系
1.3k 11
1.9k 9
1.2k 9
1.0k 8
971 8