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