많은 수의 32 비트 정수를 저장하는 경우 NS 컬렉션 유형 대신 적절한 CF 수집 유형을 사용하는 것이 좋습니다. 이것들은 사용자 정의 retain 메소드를 전달할 수있게 해줍니다.이 메소드는 콜렉션에 추가 된 모든 정수를 채울 필요를 없애줍니다.
예를 들어, 32 비트 정수의 직선 배열이 필요하다고 가정 해 봅시다. 사용 :
CFMutableArrayRef arrayRef = CFArrayCreateMutable(kCFAllocatorDefault, 0, NULL);
마지막 매개 변수는 전달할 "주소"를 유지하거나 해제하지 않도록 배열에 지시합니다. 그래서 다음과 같이하면 :
CFArrayAppendValue(arrayRef, 1);
배열은 메모리 주소 0x1에있는 객체에 대한 포인터를 전달하고 있다고 생각합니다.하지만 포인터에 retain/release를 호출하지 말라고 했으므로 컬렉션에 의해 표준 int로 처리됩니다.
교육적 가치를위한 FWIW, 표준 NSMutableArrays에는 동일한 CF 유형이 있습니다. 무료 브리징을 통해 당신은 표준 재단 모음으로 CF 모음을 사용할 수 있습니다
CFMutableArrayRef arrayRef = CFArrayCreateMutable(kCFAllocatorDefault, 0, kCFTypeArrayCallbacks);
NSMutableArray *array = (NSMutableArray *)arrayRef;
[array addObject:@"hi there!"];
NSLog(@"%@", [array objectAtIndex:0]); // prints "hi there!"
당신은 (CFDictionary/CFMutableDictionary와) 사전에 같은 트릭을 적용 할 수 세트 (CFSET/CFMutableSet) 등