0

我的可可应用程序使用一个用“C”编写的库,它正在尝试在“/tmp”路径写入文件。这会造成沙盒违规。在 Cocoa 中,我们可以使用 'NSTemporaryDirectory' API。修复沙盒违规 在沙盒环境中使用“tmpfile”API 是否安全?还有其他解决方案吗?

4

1 回答 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 回答