u Associative References

n  용도

기존의 클래스오브젝트의 인스턴스변수를 의사적으로 추가

Associative ReferencesMac OS X v10.6이후 에서만 사용 가능

 

n  Adding Storage Outside a Class Definition

클래스 선언을 변경하지않고 오브젝트에 스토리지를 추가 가능

클래스 소스코드에 접근 불가한 경우에 사용 가능

 

n  Creating Associations

런타임 함수 objc_setAssociatedObject를 사용

objc_setAssociatedObject 4개의 인수가 필요 (소스오브젝트, , , 폴리시정수)

(void포인터) : static변수를 사용하는 것이 일반적

폴리시정수 : 관련오브젝트를 대입할것인지, 유지할것인지, 복사할것인지를 지정

static char overviewKey;

NSArray *array = [[NSArray alloc] initWithObjects:@"One", @"Two", @"Three", nil];

NSString *overview = [[NSString alloc] initWithFormat:@"%@", @"First three numbers"];

objc_setAssociatedObject(array, &overviewKey, overview, OBJC_ASSOCIATION_RETAIN);

[overview release];

// (1) overview valid

[array release];

// (2) overview invalid

 

 

n  관련 오브젝트의 취득

NSString *associatedObject = (NSString *)

objc_getAssociatedObject(array,&overviewKey);

 

n  Breaking Associations

objc_setAssociatedObject(array, &overviewKey, nil,

OBJC_ASSOCIATION_ASSIGN);

 

 

 

Posted by 김반장78
,