关联对象,用于解决需要在对象中存放相关信息的问题.
1.key 可以给某个对象关联许多其他对象,这些对象通过“键”来区分。
2.objc_AssociationPolicy(存储策略)存储对象值时,可以指明“存储策略”,用以维护相应地“内存管理语义”。
如下表中列出了该枚举值,同时还列出了与之等效的@property属性:假如关联对象成为了属性,那么他就会具备对应的语义。
关联类型 | 等效的@property属性 |
---|---|
OBJC_ASSOCIATION_ASSIGN | @property (assign) or @ property (unsafe_unretained) |
OBJC_ASSOCIATION_RETAIN_NONATOMIC | @property (nonatomic, strong) |
OBJC_ASSOCIATION_COPY_NONATOMIC | @property (nonatomic, copy) |
OBJC_ASSOCIATION_RETAIN | @property (atomic, strong) |
OBJC_ASSOCIATION_COPY | @property (atomic, copy) |
// 以给定的键和策略为某对象设置关联对象值。
objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy)
// 根据给定的键从某对象中获取对应的对象值。
id objc_getAssociatedObject(id object, void *key)
// 移除指定对象的全部关联对象。
void objc_removeAssociatedObjects(id object)