我有一个极其简单的代码片段来获取使用的应用程序支持目录。问题是,它不起作用!我得到 CFArrayRef
中的值(因为我想使用 C 代码,因为稍后我将在 C++ 应用程序中使用此代码段)并尝试使用 CFArrayGetValueAtIndex()
获取其中的第一个字符串。 。我转换返回的 void*
到 char*
使用 C 风格的强制转换并尝试使用 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];
}
最佳答案
为什么要将其转换为 char*
? NSSearchPathForDirectoriesInDomains()
生成的数组包含 CFStringRef
,而不是 char*
。
尝试使用CFShow((CFTypeRef)CFArrayGetValueAtIndex(array, 0));
关于objective-c - CFArrayGetValueAtIndex 不返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11459580/