我目前正在开发iPhone应用程序。当我正在缓存数据(例如NSDictionary)以在某个视图中使用时,appdelegate显示一个闪屏。从我需要的视图中调用此数据的最佳方法是什么?我不认为将它作为变量从视图传递到视图直到它到达视图是一种正确的方法来执行此操作。
App Delegate(使用Splashscreen应该将数据缓存到NSDictionary) | 查看A. | 子视图 | 最终视图(这里我想使用缓存数据)
谢谢: - )
答案 0 :(得分:1)
如果您缓存数据的NSDictionary是您的App Delegate的ivar,您可以使用以下行从应用程序的任何位置访问它:
myAppDelegate *delegate = (myAppDelegate *)[[UIApplication sharedApplication] delegate];
NSDictionary *myData = [delegate cachedData];
希望能回答你的问题。
答案 1 :(得分:0)
如果你有一个永远不会在应用程序的整个生命周期中发布的对象,并且真的希望它可以从应用程序中的任何地方访问(例如,这样一个简单的调试NSLog绝对可以在代码的任何地方使用打印它的状态),那就是全局变量的用途。只需指定一个带有对象引用的全局变量。如果您不介意生成几乎相同但显微镜速度较慢且较大的代码,请使用合适的getter将其分配给app delegate中的实例变量。
请注意,使用全局变量违反了封装,这种封装不具有很高的可扩展性,可维护性或适用于单元测试,但非常适合于一个小应用程序,它不会比大多数对象封装的大得多。