我有一个带有几个控制器的iOS应用程序,每个控制器都有自己的xib文件.
如何设置一个跨越所有控制器的范围的全局变量?我应该NSUserDefaults每次都为每个视图使用和检索数据吗?
Ala*_*lan 10
通常,您希望避免使用全局变量.如果您需要访问必须共享的数据,则有两种常用方法.
将值放在AppDelegate中.
如果您只有一个或两个共享值,则AppDelegate是一种放置共享内容的简便方法.
可以从您的控制器访问AppDelegate:
FooApp* appDelegate = (FooApp*)[[UIApplication sharedApplication] delegate];
Run Code Online (Sandbox Code Playgroud)
FooApp应用程序类的名称在哪里.
创建一个单例类.
使用大量共享值污染AppDelegate并不理想,并且/或者如果您希望这些值在会话之间持续存在,则创建支持的Singleton类是NSUserDefaults
跨实例共享值的另一种方法.
NSUserDefaults适用于需要持久性的东西,即您计划在应用程序启动之间存储它们.对于临时变量,请考虑使用单例实例,例如MySingleton本答案中说明的类:https://stackoverflow.com/a/145164/108574.
当您拥有此类时,请将您的临时变量放在property此类中以便于访问.当你需要访问它时,只需打电话[MySingleton sharedSingleton].variable.
另请查看:http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html了解更多信息.
| 归档时间: |
|
| 查看次数: |
7304 次 |
| 最近记录: |