NSUserDefaults与CFP参考,需要考虑的因素

Nik*_*bak 5 macos cocoa objective-c nsuserdefaults cfpreferences

Apple提供了通过Core FoundationFoundation Kit管理用户首选项的文档.除了声明它们确实不同("没有免费桥接")之外,它也没有提供任何帮助来选择一个或另一个.

所以,我很感兴趣,有什么我应该考虑为应用程序选择配置机制吗?或者我应该扔一枚硬币?

谢谢!

Jon*_*ing 4

您应该使用NSUserDefaults,这绝对是默认选择。我想你可以使用 -API CFPreferences,但除非你有充分的理由做出这样的选择,否则我会避开CF-API。

  • 另外,是否有任何特殊原因需要*避开 CF-API*? (4认同)
  • @Nikita Rybak:它们通常很难使用(至少因为没有内置的简单方法来自动释放 CF 对象)。CFPreferences 专门设计用于使您能够使用任何应用程序的首选项,而不仅仅是您自己的首选项,为此,它实际上更容易。对于使用您自己的首选项, NSUserDefaults 更容易,因此您应该使用它。 (4认同)
  • 没问题!您希望避开“CF”-API,因为它们是过程性的、复杂的和低级的。使用 Objective-C。在 99.99% 的情况下,没有理由做任何不同的事情。永远不要问这样的问题:“为什么我不应该做这种复杂而可怕的事情?”。问这样的问题:“规范的、简单的解决方案不起作用;这个其他复杂的解决方案有助于解决我的问题吗?”。由于您可能没有做任何不寻常的事情,因此没有理由不使用普通的规范解决方案。 (3认同)
  • CF == 核心基础。它是比 AppKit 更低级别的 API,它是一个直接的(非 Objective-)C API,是的,除非您有特定的原因使用它,否则您通常应该更喜欢更高级别的 API。你可能使用 CF 的典型原因是,如果你正在编写一些没有 ObjC 的东西(比如移植一些 C 开源程序),如果暴露的 Objective-C API 强加了你需要绕过的限制,或者如果Objective-C 包装器对于您的特定用例来说在某种程度上很重要。 (3认同)