iOS 分类添加属性底层数据实现

2021-05-31  本文已影响0人  nickNic

实现关联对象技术的核心对象有
AssociationsManager
AssociationsHashMap
ObjectAssociationMap
ObjcAssociation

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

关联对象的底层数据结构:

结构体中有一个成员变量AssociationsHashMap,它的key是传入的object指针(实际上做了一些位运算),它的value是一个ObjectAssociationMap,ObjectAssociationMap的key是传入的指针地址,它的value是一个ObjcAssociation,ObjcAssociation结构中有两个成员变量,value和policy(传入的value和策略)

8323741-860a72f30c7958ba.png
上一篇下一篇

猜你喜欢

热点阅读