用途:面向 iOS 开发者的存储管理参考,回答 iOS 是否提供文件“最后手段才清除”标记、如何正确检查磁盘空间、设置清除优先级、排除备份、监控存储压力等常见问题。适用 iOS 5.0+(基础)、iOS 11.0+(现代容量 API)。
主要能力:一是基于位置的隐式清除优先级:tmp/ 会被随时积极清除,Library/Caches/ 在存储压力下清除,Documents/ 与 Library/Application Support/ 不会被系统清除(除非应用被删除)。二是容量检查策略,通过 URL 资源值读取 volumeAvailableCapacityForImportantUsage(用于必须保存的数据)和 volumeAvailableCapacityForOpportunisticUsage(用于可选数据,如缓存、缩略图、预取),保存前先检查再决定是否写入。三是备份控制,用 isExcludedFromBackup 标记可重新下载的内容(如已下载播客、生成的缩略图、缓存响应、大型媒体文件)不进入 iCloud/iTunes 备份。四是用 isPurgeable 将文件标记为可被系统清除,用 fileAllocatedSizeKey / totalFileAllocatedSizeKey 获取实际磁盘占用,用 volumeTotalCapacityKey 获取卷总容量。
使用方式:通过 URL.resourceValues(forKeys:) 读取上述键,通过 setResourceValues 设置 isExcludedFromBackup 或 isPurgeable。所有示例均为 Swift 代码,需在 Xcode 项目中调用 FileManager 与 URLResourceValues。存储压力检测可结合 BackgroundTasks 注册后台清理任务。
适用场景:需要区分必须保存与可重建数据、控制备份体积、在低存储时主动清理缓存、正确估算目录大小的 iOS 应用。
限制:iOS 不提供直接的“最后手段清除”显式标记,清除主要依据文件所在目录;isPurgeable 对非 Caches 目录仅为建议性质;具体 API 可用性因系统版本而异。文档未提供收费、价格或平台分发信息。