我使用以下代码从文档存储中删除文件:
class func removeFile(_ itemName:String, fileExtension: String) {
let fileManager = FileManager.default
let nsDocumentDirectory = FileManager.SearchPathDirectory.documentDirectory
let nsUserDomainMask = FileManager.SearchPathDomainMask.userDomainMask
let paths = NSSearchPathForDirectoriesInDomains(nsDocumentDirectory, nsUserDomainMask, true)
guard let dirPath = paths.first else {
return
}
let filePath = "\(dirPath)/\(itemName)"
do {
try fileManager.removeItem(atPath: filePath)
print("remove done")
} catch let error as NSError {
print(error.debugDescription)
}
}
一切正常,文件从文件目录中删除(我下载并检查了容器),
当检查设备上的应用程序设置时出现问题,我看到当我删除这些txt文件时应用程序大小没有缩小(它们非常大,每个都有4,5 mb,所以这个11.7 MB的数据来自文档可能来自他们)
我的问题是:
我的代码是否真的删除了该文件?或者只是删除对它的引用,所以内存无法释放?
答案 0 :(得分:1)
或者只是删除对它的引用,所以内存无法释放?
此。这是大多数(全部?)现代存储的工作方式。在iOS的情况下,您正在写入闪存,因此原始数据将一直存在,直到调整调整(IIRC)。您甚至无法保证对该文件的写入将覆盖旧数据,存储控制器可以将新数据放在任何位置,这在闪存上尤其如此。这就是“NAND attack”存在的原因。