您所说的编译后的类&动态添加的类,不太能理解是个什么含义
来源:5-8 动态方法解析相关面试问题&面试总结

鹤笑天
2020-03-28
1.我理解不能往编译后的类添加实例变量就是说,不能往class_ro_t中添加实力变量?
应该也是不可以往编译后的类class_ro_t中添加方法吧,想要添加方法只能是通过消息转发的方式动态生成?
2.动态添加类我理解就是class rw t,这里的实例变量以及方法是可以添加的?(也就是通过分类来添加)
实例变量放在了Associationhashmap中?
添加的实例方法实际是往class rw t methods二位数组中添加,之后这个二位数组与ro t中的一位数组合并,当消息传递时在 rw与ro 合并的二维数组里面找?
老师,我上描述是否全部准确
写回答
1回答
-
这个 class_ro_t 内存布局定好了之后不能再增加了。所以改不了,除非去修改你的代码
动态添加方法和变量 有可能是你描述的情况,你可以看下 class_addMethod的源码验证你的猜测
关联对象是 存放在一个全局单例里的 就是AssociationHasMap里
嗯 所有的方法最后应该是会合并到一个数组里的。
你很棒,可以对源码再深入研究下
012020-04-03
相似问题
那能否向编译后的类中添加方法????
回答 1
向编译后得到的类增加实例变量
回答 1
编译后的类和动态添加的类的区别
回答 4
动态添加方法一节中,我的一点疑问
回答 1
讲师,为什么不能用分类实例化对象呢
回答 2