今天用到这个方法来动态地给一个类添加属性,
但是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;