Runtime之关联对象简述

来源:互联网 发布:golang教程 pdf 编辑:程序博客网 时间:2024/05/22 15:17

关联对象,用于解决需要在对象中存放相关信息的问题.

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)

0 0
原创粉丝点击