我的可可应用程序使用一个用“ C”编写的库,该库正在尝试在“ / tmp”路径下写入文件。这将创建沙箱违规。在可可中,我们可以使用“ NSTemporaryDirectory” API。解决沙盒冲突问题在沙盒环境中使用“ tmpfile” API是否安全?还有其他解决方案吗?
最佳答案
经过实际测试后编辑
不,tmpnam()
不起作用,我认为获取临时文件名的唯一方法是在您的库中提供一个专门用于iOS和OSX的.m
文件,该文件可用于将临时目录作为C返回-串:
apple.h:
#pragma once
extern size_t getTemporaryDirectory(char *buffer, size_t len);
apple.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;
}
关于ios - C库内的tmp目录路径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16829444/