我在对象的 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]
调用。这让我有点紧张,但我把我的信任放在了苹果上。:)