gpt4 book ai didi

objective-c - 在 C 代码中检索应用程序支持目录(及其他目录)

转载 作者:行者123 更新时间:2023-11-30 14:26:34 25 4
gpt4 key购买 nike

我需要从 C 代码中获取应用程序支持目录(所以我不相信我可以使用 NSSearchPathForDirectoriesInDomains() 和类似的)。除了对路径进行硬编码(以便它可以考虑沙箱等因素)之外,还有其他方法可以做到这一点吗?

最佳答案

虽然 NSSearchPathForDirectoriesInDomains() 是一个 C 函数,但它使用涉及自动释放池的 Foundation 调用,因此您无法从纯 C 代码中调用它(好吧,您可以,但它会发出水池泄漏警告)。因此,最简单的方法是创建一个小型包装器 Obj-C 文件:

#include <Foundation/Foundation.h>

CFArrayRef appSupport() {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
CFArrayRef a = (CFArrayRef) NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory ,NSUserDomainMask, YES);
CFRetain(a);
[pool release];
return a;
}

然后你可以用纯C来处理剩下的部分,例如:

CFArrayRef a = appSupport();
if (CFArrayGetCount(a) > 0) { /* let's get the first value */
CFStringRef s = CFArrayGetValueAtIndex(a, 0);
char path[PATH_MAX];
CFStringGetFileSystemRepresentation(s, path, sizeof(path));
/* path now has what you want */
}
CFRelease(a);

我不知道有任何直接的 CF API 可以提供路径。

关于objective-c - 在 C 代码中检索应用程序支持目录(及其他目录),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8958136/

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