gpt4 book ai didi

ios - 跨 iOS 应用程序共享数据的方式是什么?

转载 作者:行者123 更新时间:2023-11-29 11:08:53 27 4
gpt4 key购买 nike

我正在开发的应用有 10 个 Controller 。我想在 5 个 Controller 的设置屏幕中共享一些状态信息。以下选项中的最佳策略是什么:

  1. 使用 NSUserdefaults 存储状态信息并使用它。
  2. 将状态信息存储在 AppDelegate 实例中并在相关 Controller 中使用它
  3. 使用单例实例来维护状态信息并在相关 Controller 上使用它

哪个更好?让我知道是否还有其他选择。

最佳答案

NSUserDefaults 解决方案还不错,至少如果值真的会自然地结束的话。当然forget about the singleton idea ,无论是单独的单例类还是应用程序委托(delegate)。


还有另一种可能性,可以减少 Controller 之间的耦合。与其依赖一个将设置作为属性公开的特定类,不如将所需的设置作为各个 Controller 的属性:

@interface Controller : UIViewController
@property(assign) NSUInteger logLevel; // a sample setting
@end

然后有一个单独的类(我们称它为 Factory)来负责创建 Controller 。工厂会记录所有设置并将其所需的设置传递给 Controller ​​。 (有一个 sample Xcode project on GitHub 展示了工厂方法,但目前它不包含这个特定问题的示例。)

这个解决方案的优点是松散耦合,你不需要额外的对象(app delegate、NSUserDefaults 实例或一些 Settings 类实例)来调整 Controller 的行为。缺点是更冗长的 Controller API。是否选择此方法取决于您的设置的性质。

当然,也可以想出一个混合方案。创建一个保留所有设置的 Settings 类,用一个漂亮的 API 公开它们(不再调用 -objectForKey:),并共享一个指向 Settings 的指针 对象到所有 Controller 。为此,您不需要单例,请参阅上面链接的 GitHub 示例代码。这意味着接口(interface)中的耦合更紧密,但更简洁。

关于ios - 跨 iOS 应用程序共享数据的方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12454071/

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