iOS基础·OC高级篇iOS

iOS知识复习笔记(3)---关联对象

2023-01-09  本文已影响0人  焦下客

关联对象其实是通过初始化一个AssociationsManager 来对全局唯一的哈希链表AssociationsHashMap进行管理关系对象,结构为:

{ object1:{key1:value1,ke2:value2,.....},

object2:{key1:value1,ke2:value2,.....},

.......

}

如果设置的value值为nil,那么会清除hashMap里面对应的值

在关系对象dealloc释放的时候也会同时释放关系属性,这里会先判断该对象是否有标记过关联对象,通过isTaggedPointer() 里面的uintptr_t has_assoc: 1 位来标记.

在manager构建的时候会加lock ,在manager析构的时候会unlock 来保证对map的线程安全访问。具体关系如下图: 1635a628a228e349_tplv-t2oaga2asx-zoom-in-crop-mark_4536_0_0_0.png
上一篇 下一篇

猜你喜欢

热点阅读