gpt4 book ai didi

ios - 为什么要使用 registerDefaults : instead of setValue:forKey:?

转载 作者:可可西里 更新时间:2023-11-01 04:40:24 26 4
gpt4 key购买 nike

当我为我的应用设置默认首选项时,我会执行以下操作:

1) 阅读 Root.plist从里面Settings.bundle入字典。

2) 我测试是否设置了首选项,如果没有,我将通过 [NSUserDefaults standardUserDefaults] registerDefaults:] 注册我的默认字典。

问题是,默认注册了 registerDefaults:不要去持久存储,所以如果用户从不改变他们的偏好,我正在阅读我的默认偏好并用 NSUserDefaults 注册它们每次应用程序启动时。

而不是使用 registerDefaults:我可以使用 setValue:forKey:并将我的默认设置转到持久存储,绕过每次启动时构建和注册字典的需要。但是,Apple 的 documentationsample code都指向 registerDefaults: .

所以我想弄清楚什么时候以及为什么我应该使用 registerDefaults:以及何时/为什么我应该使用 setValue:forKey:相反?

最佳答案

Problem is, defaults registered with registerDefaults: do not go to the persistent store, so if the user never changes their preferences I am reading my default preferences and registering them with NSUserDefaults every time the app launches.

是的。为什么这是个问题?为什么要将代码中已有的内容写入磁盘?

Instead of using registerDefaults: I could use setValue:forKey: and have my default setting go to the persistent store, bypassing the need to build & register a dictionary on each launch. However, Apple's documentation and sample code both point to registerDefaults:.

仅当您首先检查“是否已设置此值?否?好的,现在设置它。”这比仅使用 registerDefaults: 需要更多的代码和成本。

您应该使用 registerDefaults: 来设置默认值。您应该使用 setValue:forKey: 来保存主动设置的值。

还请记住 NSUserDefaults 也存在于 Mac 上。在那里,用户可以使用 defaults 命令直接访问设置,因此程序不是唯一可以修改此存储的实体。

关于ios - 为什么要使用 registerDefaults : instead of setValue:forKey:?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9166468/

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