如何在iOS开发中保存全局变量?

我有一个带有几个控制器的iOS应用程序,每个控制器都有自己的xib文件。

如何设置一个跨越所有控制器的范围的全局变量? 我应该每次使用NSUserDefaults并检索每个视图的数据吗?

NSUserDefaults适用于需要持久性的事物,即您计划在应用程序启动之间存储它们。 对于临时变量,请考虑使用单例实例 ,例如本答案中说明的MySingleton类: https : //stackoverflow.com/a/145164/108574 。

拥有此类时,将临时变量作为此类的属性以便于访问。 当你需要访问它时,只需调用[MySingleton sharedSingleton].variable

另请查看: http : //cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html了解更多信息。

通常,您希望避免使用全局变量。 如果您需要访问必须共享的数据,则有两种常用方法。

将值放在AppDelegate中。

如果您只有一个或两个共享值,则AppDelegate是一种放置共享内容的简便方法。

可以从控制器访问AppDelegate:

 FooApp* appDelegate = (FooApp*)[[UIApplication sharedApplication] delegate]; 

其中FooApp是应用程序类的名称。

创建一个单例类。

使用大量共享值污染AppDelegate并不理想,并且/或者如果您希望这些值在会话之间持续存在,则创建由NSUserDefaults支持的Singleton类是跨实例共享值的另一种方法。

根据您的确切需求,您可以了解并使用Singleton设计模式来创建一种可在所有视图中共享的数据库对象。 在这里阅读iOS单身人士。

这就是我在iOS应用程序中完成您所需的内容。