문제
OBJ-C (SELECTORS)에서 프리미티브가있는 변이 가능한 배열을 원합니다. 이 작업을 수행하는 권장 방법은 무엇입니까? NSArray
그리고 그것들은 물체 만 담을 수 있습니다.
해결책
당신은 an을 사용해야합니다 NSValue
선택기 또는 필요한 기타 원시 유형을 감싸기 위해. Cocoa에서는 일종의 포인터이므로 사용할 수 있습니다. [NSValue valueWithPointer:whatever]
그것을 구성하고 [value pointerValue]
그것을 꺼내려면. 또는 일반적으로 사용할 수 있습니다 [NSValue valueWithBytes:&whatever objCType:@encode(SEL)]
; 이것은 모든 유형에 맞습니다.
다른 팁
배열을 저장하려는 경우 SEL
대상, 가장 쉬운 것은 변환하는 것입니다. SEL
s to NSString
s를 사용합니다 NSStringFromSelector()
기능, 안에 저장하십시오 NSMutableArray
, 그런 다음 다시 변환합니다 SEL
s를 사용하여 꺼낼 때 NSSelectorFromString()
기능.
C 스타일 어레이를 직접 관리하는 것 외에 (확실히 최상의 옵션이 아님) 유일한 옵션은 사용하는 것입니다. NSArray
/NSMutableArray
, 숫자를 사용하여 저장하십시오 NSNumber
. 실제 숫자 유형보다 값을 얻는 것이 약간 성가 시지만 배열의 메모리를 직접 관리하지 못하게됩니다.
원시 유형은 일반적으로 숫자 (정수 또는 떠 다니는 점) 또는 포인터이기 때문에 목적을 위해 사용하는 데 사용되는 클래스를 사용하는 데 문제가있는 것은 무엇입니까? an NSMutableArray
의 NSNumbers
, 예를 들어?