我的可可应用程序使用一个用“ 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/

10-10 18:38
查看更多