category为什么不能添加属性

2017-03-24  本文已影响129人  三岁就很乖

category是在程序加载运行的时候,才加载到内存中,此时各个类的内存布局已经确定了,不可以再更改。

可以加属性,但是没有对应的成员变量存储区域。类的成员变量存储区在编译时就确定了。所以只能定义成@dynamic,运行时关联一块内存到对象。

在runtime中存在一个类型为AssociationHashMap的哈希映射表保存着对象动态添加的属性,每个对象以自身地址为key维护着一个绑定属性表,我们动态添加的属性就都存储在这个表里,这也是动态添加property能成功的基础。

上一篇下一篇

猜你喜欢

热点阅读