每当应用程序在后台关闭或运行一定的时间(例如5分钟)时,我想消除保存在NSuserDefaults的所有字段中的所有变量。

我试图在ApplicationDidFinishLaunching的应用程序委托中添加一行,该委托人看起来像这样:

if (UIApplicationStateBackground == TRUE) {
    NSUserDefaults *profiles = [NSUserDefaults standardUserDefaults];

    [profiles setObject:nil forKey:@"name1"];
    [profiles synchronize];
}

我还将此部分添加到应用程序意想不到的部分:

NSUserDefaults *profiles = [NSUserDefaults standardUserDefaults];

    [profiles setObject:nil forKey:@"name1"];
    [profiles synchronize];

这些似乎都没有起作用,我不知道如何设置“如果超过5分钟的应用程序在后台,删除NSUSERDEFAULTS变量”的条件 - 有帮助吗?

有帮助吗?

解决方案

我建议删除对象,而不是将其设置为零。

- (void)removeObjectForKey:(NSString *)defaultName;

NsuserDefaults的正常行为是在没有键匹配查询的键时返回零,因此我相信最好遵循相同的规则,而不是为某个密钥存储零。

希望能帮助到你。

其他提示

也许您应该使用applicationDendenterBackground:。查看 Apple Doc页面。

我会做以下操作:在代表呼叫中 - (void)applicationWillResignActive:(UIApplication *)application uiapplication我将在应用程序输入背景时保存时间戳。在这种情况下,您不必检查应用程序是否进入背景,或者只是被SMS中断,但用户命中取消并继续使用您的应用程序。

当应用程序再次启动在另一种委托法的uiapplication方法中 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 确定您已经无活跃的时间并擦除UserDefaults或不取决于持续时间。

有关应用程序变得无效的更多信息,请重新启动检查此文档的苹果文档文档 http://developer.apple.com/iphone/library/documentation/iphone/coneptual/conecteual/iphoneosprogrammingguide/coreapplication/coreapplication.htmll#/apple_reff/apple_reff/doc/doc/doc/uid/uid/uid/tp400072-ch3-sw3-sw10

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top