1.
关联是指把两个对象相互关联起来,使得其中的一个对象作为另外一个对象的一部分。
在不修改类的定义而为其对象增加存储空间。
参数有四个,第一个为源对象。第二个为关联关键字。第三个关联的对象。第四个为关联策略(是一个enum)
创建关联:
objc_setAssociatedObject
(imgView, &
key
, urlstr,
OBJC_ASSOCIATION_ASSIGN
);
获取相关联的对象
NSString*url =objc_getAssociatedObject(imgview,&key);
断开关联有两种方式:
1.使用 objc_setAssociateObjiect
(imgView,&
key
, nil,
OBJC_ASSOCIATION_ASSIGN
); 使用同样的关联关键字。将被关联的对象置为nil.此时的关联策略也无关紧要了
2.也可以使用
objc_removeAssociatedObjects。
可以断开所有关联。通常情况下不建议使用这个函数,因为他会断开所有关联。只有在需要把对象恢复到“原始状态”的时候才会使用这个函数。
关键字是一个viod类型的指针。
每一个关联的关键字必须是唯一的。通常都是会采用静态变量来作为关键字。可以这样写
const void *key;或者
static char key;