以编程方式清除iPhone上的二级缓存

时间:2011-03-23 09:16:40

标签: iphone objective-c caching memory-management

我创建了一个应用程序,我将从服务器下载图像并将其本地存储在iPhone的文件系统中。它发生得很好。现在问题是,我想在我退出应用程序时清除iPhone上的本地缓存图像。

如何在iPhone上删除这些缓存的图像。它在iPhone上使用辅助内存,我如何以编程方式访问它?

提前谢谢你。 粟色。

2 个答案:

答案 0 :(得分:4)

我的回答是按照Kirky Todds的说法,但不要使用applicationWillTerminate - 这对于iOS4 +多任务处理来说不是一个好策略,因为这种方法通常不会被调用 - 应用程序将是后台,如果运行其他应用程序(或手机已关闭/重新启动),则可以从内存中转储,而不会调用applicationWillTerminate。 (或者它将再次被预先考虑。无论哪种方式,你的缓存都不会被清除。)

相反,请考虑在启动时清算(applicationDidFinishLaunching)或在applicationWillEnterForeground清算。后者往往会更频繁地被调用,因为前者仅在实际适当的应用程序上被调用(而不是在简历中被反对)。

有关背景和生成事件的详细信息,请参阅:

http://www.cocoanetics.com/2010/07/understanding-ios-4-backgrounding-and-delegate-messaging/

答案 1 :(得分:3)

在applicationWillTerminate方法中清理它们。

- (void)applicationWillTerminate:(UIApplication *)application
{
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSError *error;
    NSArray *imagesFiles = [fileManager contentsOfDirectoryAtPath:saveDirectory error:error];
    for (NSString *file in imagesFiles) {
        error = nil;
        [fileManager removeItemAtPath:[saveDirectory stringByAppendingPathComponent:file] error:error];
        /* do error handling here */
    }
}