Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS物理内存管理(文件缓存)_Ios_Memory Management_Swift - Fatal编程技术网

iOS物理内存管理(文件缓存)

iOS物理内存管理(文件缓存),ios,memory-management,swift,Ios,Memory Management,Swift,我正在文档目录中存储图像文件以进行文件缓存 var paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String var path = paths.stringByAppendingPathComponent(imagePath!) data.writeToFile(path, atomically: true) 当存储这么多文件时会发生什么?有自动交换吗?

我正在文档目录中存储图像文件以进行文件缓存

var paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
var path = paths.stringByAppendingPathComponent(imagePath!)
data.writeToFile(path, atomically: true)
当存储这么多文件时会发生什么?有自动交换吗?或者我可以用代码检测它吗


注意:我不想使用tmp目录。

没有自动刷卡机制来处理此类任务。它是用户数据,用户应该控制它,何时写入和何时删除。您可以在应用程序中编程此类任务。您需要决定是否需要
1.根据创建文件的天数或
2.检查目录中允许的最大文件数

每次启动应用程序时,都可以在后台运行此任务

您可以使用以下代码删除单个文件。检查这个

[[NSFileManager defaultManager]removeItemAtPath:pathToFile错误:&错误]


注意-我建议仔细研究一下哪个目录更适合你

这就是我想要的。谢谢@gnasher729

将数据缓存文件放在Library/Caches/目录中。缓存数据可以用于任何需要比临时数据更持久的数据,但不能像支持文件那样持久。一般来说,应用程序不需要缓存数据才能正常运行,但它可以使用缓存数据来提高性能。缓存数据的示例包括(但不限于)数据库缓存文件和瞬态可下载内容。请注意,系统可能会删除缓存/目录以释放磁盘空间,因此您的应用程序必须能够根据需要重新创建或下载这些文件


你说的自动交换是什么意思?您希望使用哪个文件/图像进行交换?我相信您正在寻找某种机制,以便在一段时间间隔后删除这些文件。我说的对吗?是的,在一段时间间隔后删除文件可以防止对存储的不良使用。documents目录中的任何内容都不会被自动删除。还有其他的目录,比如缓存目录、临时目录。另一方面,这些东西可能会很快被删除。我认为与其寻找技术细节,不如先弄清楚你想要什么。正如我说的,我不想使用临时目录。应用程序关闭时正在清理。但我可以为此尝试缓存目录。