我使用以下代码将图像缓存到我的应用程序的文档目录中。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *saveDirectory = [paths objectAtIndex:0];
但即使关闭应用程序后,它仍然存在。当我丢失应用程序时,如何清除它。我正在模拟器中做这一切。
答案 0 :(得分:4)
我会在我的应用程序委托中实现applicationWillTerminate:并删除那里的缓存文件。或者更好的是,正如弗拉基米尔所建议的那样,将它们保存在一个临时目录中,让操作系统在需要时清理它们。
- (void)applicationWillTerminate:(UIApplication *)app
{
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSArray *cacheFiles = [fileManager contentsOfDirectoryAtPath:saveDirectory error:error];
for (NSString *file in cacheFiles) {
error = nil;
[fileManager removeItemAtPath:[saveDirectory stringByAppendingPathComponent:file] error:error];
/* handle error */
}
}
答案 1 :(得分:2)
如果您不希望在关闭应用程序后保留缓存的图像,请将它们保存到临时目录 - 它们将自动删除。
如果要手动删除文件,则必须存储它们的路径并使用以下NSFileManager函数:
- (BOOL)removeItemAtPath:(NSString *)path error:(NSError **)error
编辑:抱歉,我在这里似乎错了自动删除。以下是开发指南的引用:
使用此目录编写临时文件,在应用程序启动之间不需要保留这些文件。当您确定不再需要文件时,您的应用程序应从该目录中删除文件。 (当您的应用程序未运行时,系统也可能从该目录中清除延迟文件。)
答案 2 :(得分:1)
NSString *file;
NSDirectoryEnumerator *dirEnum = [[NSFileManager defaultManager] enumeratorAtPath:saveDirectory];
NSError* err;
while (file = [dirEnum nextObject]) {
err = nil;
[[NSFileManager defaultManager] removeItemAtPath:[saveDirectory stringByAppendingPathComponent:file] error:&err]];
if(err){
//print some errror message
}
}
答案 3 :(得分:1)
使用此问题中指定的临时目录路径: