category为什么不能添加属性
2017-03-24 本文已影响129人
三岁就很乖
category是在程序加载运行的时候,才加载到内存中,此时各个类的内存布局已经确定了,不可以再更改。
可以加属性,但是没有对应的成员变量存储区域。类的成员变量存储区在编译时就确定了。所以只能定义成@dynamic,运行时关联一块内存到对象。
在runtime中存在一个类型为AssociationHashMap的哈希映射表保存着对象动态添加的属性,每个对象以自身地址为key维护着一个绑定属性表,我们动态添加的属性就都存储在这个表里,这也是动态添加property能成功的基础。