首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法强制ios系统清除一些(或全部)应用程序的缓存?

有没有办法强制ios系统清除一些(或全部)应用程序的缓存?
EN

Stack Overflow用户
提问于 2019-09-03 17:45:34
回答 2查看 1.1K关注 0票数 1

我的应用程序下载并保存一些支持数据到“库/缓存”目录。据文档称,

使用此目录可以编写应用程序可以轻松重新创建的任何特定于应用程序的支持文件。您的应用程序通常负责管理该目录的内容,并根据需要添加和删除文件。在iOS 2.2及更高版本中,iTunes或iCloud不备份该目录的内容。此外,在设备完全恢复期间,系统将删除此目录中的文件。在iOS 5.0及更高版本中,当系统磁盘空间非常低时,系统可能会删除缓存目录。在应用程序运行时,这种情况永远不会发生。但是,请注意,从备份恢复不一定是缓存目录可以擦除的唯一条件。

因此,系统可能会清除此文件夹。我的应用程序支持的数据并不重要,所以不需要把它放在文档或其他地方。但我想看看它是如何处理‘缓存’文件夹将突然清除。

当然,如果文件存在,我可以使用NSFileManager进行检查。只需使用文件或重新下载。但这里有个诡计。我的应用程序可以从后台服务器下载一些文件。在下载文件时,它存储在‘Cache/com.apple.nsurlsessiond/APP_ID’,并且无法检查文件是否存在(因为这个步骤中的文件完全由SDK管理)。我在NSURLSession委托中添加了本例的错误处理,现在需要在“真实生活”中检查它。

有没有办法直接或间接迫使系统清除所有应用程序的“缓存”目录?

EN

回答 2

Stack Overflow用户

发布于 2019-09-03 18:05:50

可以通过以下方式删除缓存文件夹中的所有文件

代码语言:javascript
复制
    func removeNetworkCache() {
        let cachePath = (NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.cachesDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)[0])
        let appId = Bundle.main.infoDictionary!["CFBundleIdentifier"] as! String

            do {
                let content = try FileManager.default.contentsOfDirectory(atPath: cachePath)
                for file in content{
                    let fullPath = "\(cachePath)/\(appId)/\(file)"
                    try FileManager.default.removeItem(atPath: fullPath)
                }
            } catch {
               print("ERROR DESCRIPTION: \(error)")
            }
    }
票数 0
EN

Stack Overflow用户

发布于 2019-09-03 19:24:46

您可以使用“常规方式”卸载应用程序,或者,如果您在模拟器上运行,可以使用以下终端命令:xcrun simctl uninstall booted Your.app

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57776525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档