objective-c - CFArrayGetValueAtIndex 不返回任何内容

标签 objective-c c arrays

我有一个极其简单的代码片段来获取使用的应用程序支持目录。问题是,它不起作用!我得到 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/

相关文章:

iphone - ViewController - 如何正确使用它?

iOS:将字符串参数传递给函数,但另一端为 NULL?

c - 整数提升如何在 C Cast 上工作?

c - '[' 标记前的语法错误

c# - 数组中的所有对象都等于最后添加的对象c#

objective-c - Xcode 的隐藏功能

ios - 创建新文件并使用 NSFileManager objective c 读取它

c - 使用带空格的 mciSendString

arrays - 将数字分类为具有特定总和的集合的算法

php - 我怎样才能从这个数组 (stdClass) php 中获取数据?