iOS - 保存到库/缓存/会导致错误吗?
Posted
技术标签:
【中文标题】iOS - 保存到库/缓存/会导致错误吗?【英文标题】:iOS - Can saving to Library/Caches/ result in error? 【发布时间】:2015-05-31 12:30:21 【问题描述】:如果应用开始将几乎无限的图像(按需)保存到 /Library/Caches 目录以进行缓存,那么当存储空间已满时会发生什么情况? 保存到缓存文件夹会出错吗?或者如果应用是打开的,iOS会自动清除打开的应用的缓存吗?如果不是,开发人员是否有责任为打开的应用程序启动此清除过程? 或 是否保证尝试将图像保存到 /Library/Caches 将始终成功,无论清除是否需要位置与否?(缓存的图像在退出时由应用清理)。
【问题讨论】:
【参考方案1】:是的,它可能会导致错误。不,ios 不会在应用程序运行时自动清除它。引用自docs:
缓存
在 iOS 5.0 及更高版本上,系统可能会在系统磁盘空间非常低的极少数情况下删除 Caches 目录。应用程序运行时永远不会发生这种情况
因此,您有责任在运行时清理缓存目录。但是,您可能会在极少数情况下遇到此错误,因为 iOS 会尝试删除其他未运行的应用程序的缓存。
【讨论】:
感谢您指出@Sega-Zero,是否有可能知道缓存中是否有足够的空间来保存另一个图像?或者是否可以检测到需要清除? 嗯,你可以尝试两种方法:1. 尝试写入磁盘,检查是否有错误(相当糟糕的方法,但足够安全) 2. 检查可用空间并比较节省块大小.这可以通过非常简单的代码来完成,如下所示:NSError *error = nil; NSString *dir = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0]; NSDictionary *attrs = [[NSFileManager defaultManager] attributesOfFileSystemForPath:dir error:&error]; if ([[attrs valueForKey:NSFileSystemFreeSize] unsignedLongLongValue] < picSize) save();
以上是关于iOS - 保存到库/缓存/会导致错误吗?的主要内容,如果未能解决你的问题,请参考以下文章