老师,你提到category无法添加变量,因为编译后类的大小固定了。那为什么类大小固定以后,还可以通过category添加方法呢?
来源:7-1 Category介绍
慕码人6402870
2020-11-08
老师,你提到category无法添加变量,因为编译后类的大小固定了。那为什么类大小固定以后,还可以通过category添加方法呢?
前面学习到,添加方法的时候,是会重新分配内存的,来适应大小的变化。为什么不能通过这一机制来添加实例变量呢?
写回答
1回答
-
逆风
2021-02-04
实例对象的存储空间大小包含变量,访问变量是基于对象地址的偏移。
实例对象的存储空间大小不包含方法,访问方法是通过遍历方法列表。
这里说的重新分配内存和类的大小没关系,只与方法列表大小有关。
你所说的这一机制,就是AssociatedObject(关联对象)了。
00
相似问题