iPhone设置NsuserDefaults在应用程序关闭或在后台时将其设置为零
-
30-09-2019 - |
题
每当应用程序在后台关闭或运行一定的时间(例如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