CFArrayGetValueAtIndex没有返回任何内容

时间:2012-07-12 19:53:14

标签: objective-c c arrays

我有一个简单的代码片段来获取使用的应用程序支持目录。问题是,它不起作用!我在CFArrayRef中得到了值(因为我想使用C代码,因为我稍后会在C ++应用程序中使用此代码段)并尝试使用CFArrayGetValueAtIndex()获取第一个字符串。我使用C风格的转换将返回的void*转换为char*并尝试使用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];
}

1 个答案:

答案 0 :(得分:2)

为什么要将其转换为char*NSSearchPathForDirectoriesInDomains()生成的数组包含CFStringRef s,而非char* s。

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