首页 > objc_getAssociatedObject的第二个参数的作用是什么?

objc_getAssociatedObject的第二个参数的作用是什么?

今天用到这个方法来动态地给一个类添加属性,
但是objc_getAssociatedObject(id object, const void *key)的第二个参数的作用不是很清楚,
网上看了几片资料,感觉都是随意设置,
这个值是可以随便设的吗?


简短答案:可以随意设。

长答案:key,通常你理解成唯一标示就行,确保它不会被改变。虽然可以随意设置,但请保证语义化。


一般我会定义static const char Key = XXXX;
objc_setAssociatedObject(self, &key, object, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
这个key就是索引 定义一个有意义的key就行


关联对象中的对象相当于字典中的value,key相当于字典中的key。根据key可以取到你关联的对象


给一个唯一的地址就行


通常都是会采用静态变量来作为关键字,比如static char overviewKey;

【热门文章】
【热门文章】