实现关联对象技术的核心对象有
AssociationsManager
AssociationsHasMap
objectAssociationMap
objcAssociation
class AssociationsManager {
static AssociationsHashMap *_map;
};
class AssociationsHashMap : public unordered_map<disguised_ptr_t,ObjectAssociationMap>
class ObjectAssociationMap : public std::map<void *, ObjcAssociation>
class ObjcAssociation {
uintptr_t _policy;
id _value;
};
![](https://img.haomeiwen.com/i4349235/4c80ec4b91270027.png)
🌟关联对象并不是存储在被关联对象本身内存中
🌟关联对象存储在全局的统一的一个AssociationsManager中
🌟设置关联对象为nil,就相当于是移除关联对象
网友评论