Associative运行时特性可以给两个对象建立关联关系,这是一种从属关系。
相关API:
1 | // objc/runtime.h |
应用场景:
- 给系统类、第三方类添加属性。
- 使用
RETAIN_NONATOMIC
关联类型的对象关联目标对象,以监听目标对象的生命周期。
实现原理
组成部分:
- AssociationsManager:管理一个AssociationsHashMap。
- AssociationsHashMap:用
objc_setAssociatedObject
传入的object为基础,进行一些其他操作后作为Key,ObjectAssociationMap为Value。 - ObjectAssociationMap:用
objc_setAssociatedObject
传入的key作为Key,ObjcAssociation为Value。
对象关联的对象在-dealloc
调用的object_dispose
函数中释放。