0

我有一个非常简单的代码片段来获取一个使用的应用程序支持目录。问题是,它不起作用!我在 a 中获取值CFArrayRef(因为我想使用 C 代码,因为稍后我将在 C++ 应用程序中使用此代码段)并尝试使用CFArrayGetValueAtIndex(). 我使用 C 样式转换将返回的转换void*为 achar*并尝试使用 输出它printf(),但没有输出任何内容!谁能解释为什么?我已经通过文档在线查看CFArray并尝试用谷歌搜索该问题,但一无所获。任何帮助将非常感激!

代码:

#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];
}
4

1 回答 1

2

你为什么要把它转换成一个char*?结果数组NSSearchPathForDirectoriesInDomains()包含CFStringRefs,而不是char*s。

尝试使用CFShow((CFTypeRef)CFArrayGetValueAtIndex(array, 0));

于 2012-07-12T19:57:26.440 回答