gpt4 book ai didi

iphone - 在 -(void)dealloc 中同步 NSUserDefaults 是一种不好的形式吗?

转载 作者:行者123 更新时间:2023-12-03 18:39:19 25 4
gpt4 key购买 nike

我从对象的 init 方法中的 NSUserDefaults 加载。我可以在对象的 dealloc 方法中保存到 NSUserDefaults 吗?

完全类似于:

-(void)dealloc {
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:self.filenamesArray forKey:self.defaultsKey];
[userDefaults synchronize];
self.filenamesArray = nil;
self.defaultsKey = nil;
[super dealloc];
}

好,坏,好吗?如果不好,哪里会更好。

编辑:

感谢您的详细回复。所有这些都是有道理的。我发现这里不适合保存到用户默认值的另一个原因是,只有当对象很好地释放时才会调用 dealloc。如果我的应用程序被终止,此代码将永远不会运行。同样,如果应用程序被插入后台(iOS 4),则不会运行。我还删除了显式的 [userDefaults Synchronize] 调用。这让我有点紧张,但我把我对苹果的信任放在了这一点上。 :)

最佳答案

这很糟糕,因为当调用 -dealloc 时,其他对象已经放弃了对它的兴趣。这可能会产生许多不同的影响。

设置用户默认值的更好位置是设置更改的那一刻。这样它就会立即被持久化,并且应用程序可以被终止,而不必担心设置不会被持久化,因为对象图的一部分可能已经消失了。

关于iphone - 在 -(void)dealloc 中同步 NSUserDefaults 是一种不好的形式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4175134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com