gpt4 book ai didi

iphone - 您将全局应用程序数据放在 iPhone 应用程序中的什么位置?

转载 作者:行者123 更新时间:2023-12-03 18:43:20 26 4
gpt4 key购买 nike

我有一个应用程序,允许用户查看、操作和管理 Schedule 对象的集合。应用程序的不同部分需要访问这些数据。我尝试过使集合成为单例,但我发现这不是很干净。

我最近更改为将全局数据存储在 AppDelegate 类中并使用:

MyAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
[delegate.myGlobalData doSomething];

这消除了我的全局数据成为单例的需要,但实际上只是利用了 UIApplication 单例。

确实不只有一个主视图 Controller 可以将其存储在我的案例中。所以我想知道人们使用什么不同的策略来解决这个问题。

最佳答案

如果您有一个需要多个 Controller 访问的中央数据模型,那么使用单例来管理数据并没有什么问题——“sharedManager”正是场景所需要的。这本质上就是 Apple 使用地址簿 API 来操作联系人的做法。他们使用 C 风格的 API,但它涉及获取对共享地址簿数据库的引用,然后在将来的调用中使用它。

使用应用程序委托(delegate)也可以,但正如您所注意到的,这实际上是同一件事。您将应用程序委托(delegate)单例指定为数据模型的所有者,这也可以。

NSUserDefaults 可以以这种方式被滥用,但这实际上不是它的目的。除了有点难看之外,它还限制了您可以存储的数据类型。您自己的模型可以存储您喜欢的任何数据,但 NSUserDefaults 不太灵活。

使用 SQLite 或属性列表或其他任何方式将数据存储到文件中实际上与如何管理数据的问题正交。从您的描述来看,单例方法听起来很合理,并且该单例可以以对您正在使用的数据有意义的任何方式写入文件。

关于iphone - 您将全局应用程序数据放在 iPhone 应用程序中的什么位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/515917/

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