CTypeRef
을 특정 CoreFoundation 유형으로 변환하는 간단한 방법이 있습니까? (CFStringRef)myObjectRef
인라인으로 캐스팅하고 싶지는 않지만 모든 CoreFoundation 유형에 대해이 작업을 수행하는 도우미 메서드를 만들고 싶습니다.기본 CFTypeRef를보다 구체적인 CoreFoundation 유형으로 변환
CFGetTypeID(myObjectRef) == CFStringGetTypeID()
과 같은 것을 사용하면 CTypeRef
이 CFString
인지 여부를 알 수 있습니다. 그러나 이것을 수행하는 단일 메소드를 작성하는 것은 매우 장황 해지고 if 문이 많이 발생할 수 있습니다.
유일한 방법은 CFGetTypeID()
에 대한 if 문을 많이 사용하는 방법을 구축하고 있습니까? 아니면 이것을 할 수있는 더 간단한 방법이 있습니까?
UPDATE : 예
내가 바꿀 수없는 레거시 코드로 작업하는 도우미 기능을하고 싶습니다와. 현재 CFDictionaryRef
, CFStringRef
또는 CFURLRef
중 하나를 반환 값으로 제공하며 CTypeRef
으로 제공됩니다. 현재이 문제를 해결하기 위해 반환 값에 CFGetTypeID()
을 실행하고 있지만 이상적이지 않습니다. 대신에 C 스타일의 캐스트를 사용하는 대신에 이것을 처리하는 도우미 CastToCF()
을 갖고 싶습니다. 이렇게하면 미래에도 테스트를 쉽게 수행 할 수 있습니다.
P. 나는 가변 유형에 대해 걱정하지 않는다.
도움이 될만한 예제가 추가되었습니다. – KushalP
@KushalP 업데이트 됨 – justin