매우 유용한 간단한 코드 스 니펫을 사용하여 응용 프로그램 지원 디렉토리를 얻습니다. 문제는 작동하지 않는다는 것입니다! CFArrayRef
(이후 C++ 응용 프로그램에서이 스 니펫을 사용할 예정이므로 C 코드를 사용하고 싶기 때문에)의 값을 얻고 CFArrayGetValueAtIndex()
을 사용하여 첫 번째 문자열을 얻으려고합니다. void*
을 C 스타일의 캐스트를 사용하여 char*
으로 변환하고 printf()
을 사용하여 출력하려고 시도했지만 아무 것도 출력되지 않습니다! 왜 그 이유를 설명 할 수 있습니까? 나는 CFArray
에 대한 문서를 온라인으로 살펴본 후 문제를 Google에 시도했지만 아무 것도 생각 나지 않았습니다. 어떤 도움이라도 정말 감사 할 것입니다!CFArrayGetValueAtIndex가 aything을 반환하지 않습니다.
코드 :
#include <Foundation/Foundation.h>
#include <typeinfo>
int main (int argc, const char * argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
CFArrayRef array = \
(CFArrayRef)NSSearchPathForDirectoriesInDomains(
NSApplicationSupportDirectory,
NSUserDirectory,
YES);
char* string = (char*)CFArrayGetValueAtIndex(array, 0);
printf("string: %s\n", string);
[pool drain];
}
이 오 와우, 지금은 말도 느낌 사용해보십시오! 나는'CFStringRef'가'NSString'과 동등하다고 가정합니다, 그렇습니까? 그래서 저는 그것들을'char *'로 변환하는 방법을 사용해야 할 것입니다. 도와 주셔서 감사합니다! – rcplusplus
@rcplusplus : 왜 여기서'CFArray'를 사용하고 있습니까? 왜이 캐스팅을하고 있니? –
나는 C++ 코드를 작성했기 때문에 Objective-C 클래스를 사용하고 싶지 않습니다. C++에서 Objective-C를 사용하려면 .mm 확장자를 만들어야하는데, 이는 윈도우에서 컴파일 할 수 없다는 것을 의미합니다. – rcplusplus