iOS高级技术文章

关联对象的原理

2020-04-15  本文已影响0人  大鹅ne

实现关联对象技术的核心对象有
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;
};
Screen Shot 2020-04-15 at 11.02.04 PM.png

🌟关联对象并不是存储在被关联对象本身内存中
🌟关联对象存储在全局的统一的一个AssociationsManager中
🌟设置关联对象为nil,就相当于是移除关联对象

上一篇 下一篇

猜你喜欢

热点阅读