美文网首页
AssociatedObject的实现原理

AssociatedObject的实现原理

作者: GTMYang | 来源:发表于2018-05-10 16:49 被阅读0次

key:主对象的~uintptr_t(uint指针取反)
value:ObjectAssociationMap<key, assocatedOBJ>
存储到全局的HashMap中

objc_getAssociatedObject

先通过 key = 主对象的~uintptr_t(uint指针取反)从全局HashMap中拿到
value:ObjectAssociationMap<key, assocatedOBJ>
然后通过key从ObjectAssociationMap<key, assocatedOBJ>中拿到assocatedOBJ

objc_setAssociatedObject

通过key在全局HashMap中找ObjectAssociationMap<key, assocatedOBJ>

找到->检查key是否已用->key已用就用新对象替换旧对象
key未用直接加进去

没找到->new ObjectAssociationMap -> 直接加进去

相关文章

网友评论

      本文标题:AssociatedObject的实现原理

      本文链接:https://www.haomeiwen.com/subject/fjxtdftx.html