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

关联对象其实是通过初始化一个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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容