gpt4 book ai didi

objective-c - CoreFoundation 中 NSHomeDirectory() 的等价物是什么?

转载 作者:可可西里 更新时间:2023-11-01 03:27:27 35 4
gpt4 key购买 nike

我有一个 C 库,我正在尽可能少地修改它,以添加一个功能并使其在 iOS 上正常运行。它在 iOS 5.1 上运行良好,但在 iOS 6 上中断,因为它需要写入一个小的临时文件,而且我认为它曾经写入的位置 (/tmp/some.file) 存在一个问题 w/Entitlements。

我知道 NSHomeDirectory() 会给我 objectiveC 的沙箱根目录,但它需要 objectiveC/Foundation 才能运行。如何仅使用 C/CoreFoundation 调用获取沙箱根目录?

最佳答案

NSHomeDirectory() 的 CoreFoundation 等价物是 CFCopyHomeDirectoryURL()。它从 iOS 5 开始可用,唯一“记录”的地方是 iOS 4.3 to iOS 5.0 API Differences .

如果您想要临时目录而不对 tmp 字符串进行硬编码,那么您可能希望将 confstr_CS_DARWIN_USER_TEMP_DIR 常量一起使用,然后回退到TMPDIR 环境变量,如果 confstr 调用失败:

char tmpdir[PATH_MAX];
size_t n = confstr(_CS_DARWIN_USER_TEMP_DIR, tmpdir, sizeof(tmpdir));
if ((n <= 0) || (n >= sizeof(tmpdir)))
strlcpy(tmpdir, getenv("TMPDIR"), sizeof(tmpdir));
CFURLRef tmp = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault, (UInt8 *)tmpdir, strlen(tmpdir), true);

关于objective-c - CoreFoundation 中 NSHomeDirectory() 的等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12714022/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com