u Associative References
n 용도
기존의 클래스오브젝트의 인스턴스변수를 의사적으로 추가
Associative References는 Mac 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); |
'아이폰개발' 카테고리의 다른 글
[아이폰개발] Objective-C 7.Fast Enumeration (0) | 2011.01.12 |
---|---|
[아이폰개발] Objective-C JSON 통신 모듈 (0) | 2010.12.29 |
[아이폰개발] Objective-C 5.카테고리와 확장 (0) | 2010.12.20 |
[아이폰개발] Objective-C 4.프로퍼티 (0) | 2010.12.17 |
[아이폰개발] Objective-C 3.프로토콜 (0) | 2010.12.16 |