【问题标题】:iOS - Can saving to Library/Caches/ result in error?iOS - 保存到库/缓存/会导致错误吗?
【发布时间】:2015-05-31 12:30:21
【问题描述】:

如果应用开始将几乎无限的图像(按需)保存到 /Library/Caches 目录以进行缓存,那么当存储空间已满时会发生什么情况? 保存到缓存文件夹会出错吗?或者如果应用是打开的,iOS会自动清除打开的应用的缓存吗?如果不是,开发人员是否有责任为打开的应用程序启动此清除过程?是否保证尝试将图像保存到 /Library/Caches 将始终成功,无论清除是否需要位置与否?(缓存的图像在退出时由应用清理)。

【问题讨论】:

    标签: ios iphone cocoa-touch


    【解决方案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();
    猜你喜欢
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 1970-01-01
    • 2014-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多