Objective c 将对象作为对象添加到NSMutableArray';关联参照

Objective c 将对象作为对象添加到NSMutableArray';关联参照,objective-c,Objective C,我有以下资料: 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*) getOrCreateArray { sta

我有以下资料:

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*) 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];
}
我想知道:如何在
anObj
对象的关联引用中向
NSMutableArray
添加对象?这样的事情可能吗


我甚至可以做类似于
[objc_getAssociatedObject(anObj,&associated_obj_key)addObject:something]的事情吗

是的,但您必须在所有位置使用相同的键。由于使用某个静态变量的地址确实是一种推荐的方法,因此我建议将获取关联对象引用的单一方法分解出来(必要时创建)。我使用以下方法:

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