向NSMutableArray中添加对象作为对象的关联引用

3

我有以下内容:

static char associated_obj_key;
id anObj;

NSMutableArray *a = [[NSMutableArray alloc] init];
objc_setAssociatedObject(anObj, &associated_obj_key, a, OBJC_ASSOCIATION_RETAIN);
[a release];

我想知道如何将对象添加到anObj对象的关联引用中的NSMutableArray中?这种操作是否可行?

我能否使用[objc_getAssociatedObject(anObj, &associated_obj_key) addObject:something];这样的语句吗?

1个回答

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];
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接