objective-c – 用-applicationWillTerminate编写的NSUserDefaults:不生效;为什么?

objective-c – 用-applicationWillTerminate编写的NSUserDefaults:不生效;为什么?,第1张

概述我已将下面的代码放在AppDelegate中,但是当我再次启动应用程序时,我注意到值仍然保存(Not NULL).这是为什么? 代码: - (void)applicationWillTerminate:(UIApplication *)application{ [[NSUserDefaults standardUserDefaults] setObject:NULL 我已将下面的代码放在AppDelegate中,但是当我再次启动应用程序时,我注意到值仍然保存(Not NulL).这是为什么?

代码:

- (voID)applicationWillTerminate:(UIApplication *)application{       [[NSUserDefaults standardUserDefaults]         setobject:NulL forKey:@"roomCat"];        [[NSUserDefaults standardUserDefaults]         setobject:NulL forKey:@"TFA"];        [[NSUserDefaults standardUserDefaults]        setobject:NulL forKey:@"comments"];}

谢谢.

解决方法 您应该使用-removeObjectForKey:而不是设置NulL.前者是消除价值的官方方式,而后者是无证行为.

在任何情况下,如果使用-removeObjectForKey:不起作用,那么您可以添加一个调用

[[NSUserDefaults standardUserDefaults] synchronize];

在末尾.但只有在没有它的情况下才能发挥作用.原因是因为调用-synchronize(相对)昂贵,所以只有在需要确保正确性时才应该这样做.

再看看之后,我怀疑你真正的问题是这个方法根本没有被调用.在iOS 4及更高版本中,当应用程序进入后台时,它们不会调用此方法,而是调用-applicationDIDEnterBackground:.您应该尝试将此代码放在那里.

总结

以上是内存溢出为你收集整理的objective-c – 用-applicationWillTerminate编写的NSUserDefaults:不生效;为什么?全部内容,希望文章能够帮你解决objective-c – 用-applicationWillTerminate编写的NSUserDefaults:不生效;为什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1033936.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存