Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何在iOS开发中保存全局变量?_Objective C_Ios - Fatal编程技术网

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

Objective c 如何在iOS开发中保存全局变量?,objective-c,ios,Objective C,Ios,我有一个iOS应用程序,有几个控制器,每个控制器都有自己的xib文件 如何设置覆盖所有控制器的全局变量?我是否应该使用NSUserDefaults并每次检索每个视图的数据?NSUserDefaults用于需要持久性的内容,即您计划在应用程序启动之间存储它们。对于临时变量,考虑使用单实例,如 MySuntLon 类: 拥有此类后,将临时变量作为此类的属性,以便于访问。当您需要访问它时,只需调用[MySingleton sharedSingleton].variable 另请检查此处:了解更多信息。

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


如何设置覆盖所有控制器的全局变量?我是否应该使用
NSUserDefaults
并每次检索每个视图的数据?

NSUserDefaults
用于需要持久性的内容,即您计划在应用程序启动之间存储它们。对于临时变量,考虑使用<强>单实例<<强> >,如<代码> MySuntLon 类: 拥有此类后,将临时变量作为此类的
属性
,以便于访问。当您需要访问它时,只需调用
[MySingleton sharedSingleton].variable


另请检查此处:了解更多信息。

根据您的具体需要,您可以了解并使用设计模式创建一种可以在所有视图中共享的数据库对象。阅读有关iOS单例的信息


这就是我如何在我的iOS应用程序中实现您想要的功能。

一般来说,您希望避免使用globals。如果您需要访问必须共享的数据,有两种常见的方法

将值放入AppDelegate。

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

AppDelegate可以通过以下方式从控制器访问:

FooApp* appDelegate = (FooApp*)[[UIApplication sharedApplication] delegate];
其中
FooApp
是应用程序类的名称

创建一个单例类。

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