我正在做一个小的iOS项目,我偶然发现了一个变量作用域的问题。
我需要的是一个在启动时初始化的对象,并且在应用程序关闭之前对所有控制器都可用。
该对象将保存从数据库(sql)或本地存储加载的数据-我还不能100%确定在这里该做什么。
我需要所有的viewControllers始终访问该数据保存对象,并且我需要在应用程序进入后台时保留该对象。
这有可能实现吗?如果,我该怎么做?
对于简单的变量,我知道我可以使用外部变量,但它也适用于完整的对象吗?
谢谢你的回答,sebastian
这是这里比较常见的问题之一。我建议远离extern
变量和singleton,请参阅我对这个相关问题的回答和这个示例Xcode项目,以获得更好的解决方案。(示例项目目前还很简单,稍后我将添加更多常见场景。)
一个可能的初始化点可能是您的应用程序委托的didFinishLaunching:withOptions:
方法,还是为时已晚?您也可以通过应用程序代理(如[[UIApplication sharedApplication] delegate]
)引用数据编辑:为了清楚起见,可以这样做,但我不建议以这种方式存储和访问任意数据。
也可以使用外部参照参照对象,如extern NSString *gGlobalString;
中所示。不过,初始化需要一个安全的地方。单例可能是更好的解决方案。