实现关联对象技术的核心对象有
AssociationsManager
管理程序所有关联对象信息的类
AssociationsHashMap
用来存储 全部对象 的关联对象信息的字典,一个对象对应一个ObjectAssociationMap。
ObjectAssociationMap
用来存储 一个对象 的所有关联对象信息,一个key对应一个ObjcAssociation。
ObjcAssociation
用来存储关联对象的信息的 类,包括关联对象的关联策略和值。
四个核心对象的关系
注:
- 关联对象存储在全局的统一的一个AssociationsManager中,并不是存储在被关联对象本身内存中 ;
- 设置关联对象时如果value传的值为nil,就相当于是移除关联对象;
- 对象销毁时,程序会自动清除和对象相关的关联对象信息,无需手动清除;