老师,你提到category无法添加变量,因为编译后类的大小固定了。那为什么类大小固定以后,还可以通过category添加方法呢?

来源:7-1 Category介绍

慕码人6402870

2020-11-08

老师,你提到category无法添加变量,因为编译后类的大小固定了。那为什么类大小固定以后,还可以通过category添加方法呢?

前面学习到,添加方法的时候,是会重新分配内存的,来适应大小的变化。为什么不能通过这一机制来添加实例变量呢?

写回答

1回答

逆风

2021-02-04

实例对象的存储空间大小包含变量,访问变量是基于对象地址的偏移。

实例对象的存储空间大小不包含方法,访问方法是通过遍历方法列表。

这里说的重新分配内存和类的大小没关系,只与方法列表大小有关。

你所说的这一机制,就是AssociatedObject(关联对象)了。

0
0

面试跳槽提升必备 全面解析iOS中的Runtime机制

高薪职位,复杂业务需求,高性能APP,Runtime技术不可不学。

275 学习 · 48 问题

查看课程