我有以下内容:
static char associated_obj_key;
id anObj;
NSMutableArray *a = [[NSMutableArray alloc] init];
objc_setAssociatedObject(anObj, &associated_obj_key, a, OBJC_ASSOCIATION_RETAIN);
[a release];
我想知道:如何在NSMutableArray
对象的关联引用中向anObj
添加对象?这样的事情甚至可能吗?
我甚至可以做[objc_getAssociatedObject(anObj, &associated_obj_key) addObject:something];
之类的事情吗?
答案 0 :(得分:3)
是的,但你必须在整个地方都有相同的密钥。由于使用某个静态变量的地址确实是推荐的方法,我建议将获取相关对象引用的单一方法分解(必要时创建)。我使用以下内容:
- (NSMutableArray*) getOrCreateArray
{
static const char key;
NSMutableArray* arr = objc_getAssociatedObject(self, &key);
if (!arr)
{
arr = [NSMutableArray array];
objc_setAssociatedObject(self, &key, arr, OBJC_ASSOCIATION_RETAIN);
}
return arr;
}
- (void) someMethod
{
id something = // ....
[[self getOrCreateArray] addObject: something];
}