我的可可应用程序使用一个用“C”编写的库,它正在尝试在“/tmp”路径写入文件。这会造成沙盒违规。在 Cocoa 中,我们可以使用 'NSTemporaryDirectory' API。修复沙盒违规 在沙盒环境中使用“tmpfile”API 是否安全?还有其他解决方案吗?
问问题
208 次
1 回答
1
EDITED 实际测试后
不,tmpnam()
行不通,我认为获得临时文件名的唯一方法是为.m
您的库提供一个专门用于 iOS 和 OSX 的文件,该文件可用于将临时目录作为 C 字符串返回:
苹果.h:
#pragma once
extern size_t getTemporaryDirectory(char *buffer, size_t len);
苹果.m:
size_t getTemporaryDirectory(char *buffer, size_t len)
{
@autoreleasepool
{
NSString *tempDir = NSTemporaryDirectory();
if (tempDir != nil)
{
const char *utf = [tempDir UTF8String];
strncpy(buffer, utf, len);
return strlen(utf);
}
}
return 0;
}
于 2013-05-30T07:11:40.813 回答