2012-01-07 4 views
3

としてNSMutableArrayのにオブジェクトを追加:は、私は、次のしているオブジェクトの連想参照

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];のようなことをすることはできますか?

答えて

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]; 
} 
関連する問題