一. 关联对象主要函数:
基本说明:关联对象就是runTime界的NSMultableDictionary
void objc_setAssociatedObject(id object,constvoid*key, id value, objc_AssociationPolicy policy); 相当于 setValue:forKey 进行关联value对象
id objc_getAssociatedObject(id object, const void *key); 用来读取对象
void objc_removeAssociatedObjects(id object); 移除一个关联对象,或者使用objc_setAssociatedObject函数将key指定的关联对象设置为nil。
相关参数 :
key:要保证全局唯一,key与关联的对象是一一对应关系。必须全局唯一。通常用@selector(methodName)作为key。value:要关联的对象。policy:关联策略。有五种关联策略。OBJC_ASSOCIATION_ASSIGN 等价于 @property(assign)。OBJC_ASSOCIATION_RETAIN_NONATOMIC等价于 @property(strong, nonatomic)。OBJC_ASSOCIATION_COPY_NONATOMIC等价于@property(copy, nonatomic)。OBJC_ASSOCIATION_RETAIN等价于@property(strong,atomic)。OBJC_ASSOCIATION_COPY等价于@property(copy, atomic)。
使用场景:关联对象相当于实例变量,在类别(也有人管叫分类)里面,不能创建实例变量, 关联对象就可以解决这种问题。(对应属性,有对应属性的的runtime 解决方法)
设置关联对象关键key,一共有三种写法:
(1)静态变量&btnKey
(2)@selector(methodName)
(3)_cmd
网友评论