2012-09-05 3 views
0

CFType인지 아닌지 확인하는 방법 :CFArrayGetValueAtIndex : 리턴 값이 애플 개발자 웹 사이트에서입니다

const를 무효 * CFArrayGetValueAtIndex ( CFArrayRef theArray, cfindex 변경됨 IDX );

반환 값
theArray의 idx 인덱스 값입니다. 반환 값이 Core Foundation Object 인 경우, 소유권은 Core Foundation 용 메모리 관리 프로그래밍 지침에서 "Get Rule"을 따릅니다.

이제 반환 값이 CFType인지 테스트하는 방법은 무엇입니까?

편집 :

그냥 정확히 내가 찾고 무엇을 __isctype라는 /usr/lib/system/libsystem_c.dylib의 기능을 발견했다. 누군가이 기능에 대해 더 많이 알고 있습니까?

+1

'__isctype()'은 CFTypes와 아무 관련이 없습니다. 그것은 문자의 "클래스"(즉, 숫자 또는 문자 등)를 결정하는 데 사용됩니다. 또한 개인 기능이기도합니다. –

+0

나를 위해 얼마나 당황 스럽습니까. 나는 너무 많은 시간 동안 일하고 있습니다. 물론 C에는 RTTI 기능이 없습니다. – Eliott

답변

2

간단히 말해, 제공되는 개체 제품군을 항상 알고 있어야합니다.

CF 호환 유형 (NSObject 포함)이 아닌 경우 명백한 문서로 알 수 있습니다. 매우 특이한 CFArray를 생성했거나 클라이언트가이를 나타낼 수 있습니다 (예 : 배열에 구조체에 대한 포인터가 들어 있음). 이것은 안전한 기본 가정이며, CFArray에서 CF와 호환되는 객체를 반환하지 않는 모든 호출은 명확하고 명확해야합니다.

의심되는 경우 개발 중에 반환 된 객체가 항상 CFRetainCFRelease 일 수 있습니다 (CF 유형이 아닌 경우 충돌이 발생 함).