Iphone 在整个应用程序中共享对象
我目前正在为iPhone开发一个应用程序。当我缓存数据(如NSDictionary)以在特定视图中使用时,appdelegate会显示一个启动屏幕。从我需要的视图调用此数据的最佳方式是什么?我不认为将它作为变量在视图之间传递,直到它到达视图才是正确的方法 应用程序委托(带有Splashscreen,应将数据缓存到NSDictionary) | 查看A | 子视图 | 最终视图(这里我想使用缓存的数据)Iphone 在整个应用程序中共享对象,iphone,objective-c,xcode,Iphone,Objective C,Xcode,我目前正在为iPhone开发一个应用程序。当我缓存数据(如NSDictionary)以在特定视图中使用时,appdelegate会显示一个启动屏幕。从我需要的视图调用此数据的最佳方式是什么?我不认为将它作为变量在视图之间传递,直到它到达视图才是正确的方法 应用程序委托(带有Splashscreen,应将数据缓存到NSDictionary) | 查看A | 子视图 | 最终视图(这里我想使用缓存的数据) 谢谢:-)如果您正在缓存数据的NSDictionary是应用程序代理的ivar,则您可以使用以
谢谢:-)如果您正在缓存数据的NSDictionary是应用程序代理的ivar,则您可以使用以下行从应用程序中的任何位置访问它:
myAppDelegate *delegate = (myAppDelegate *)[[UIApplication sharedApplication] delegate];
NSDictionary *myData = [delegate cachedData];
希望这能回答您的问题。如果您有一个在整个应用程序生命周期内永远不会发布的对象,并且确实希望它可以从应用程序中的任何位置访问(例如,这样一个简单的调试NSLog就可以从代码中的任何位置打印它的状态),那么这就是全局变量的用途。只需指定一个全局变量,并引用该对象。如果您不介意生成几乎相等但从微观角度看更慢、更大的代码,那么使用合适的getter将其分配给app委托中的实例变量
请注意,使用全局变量违反了封装,它不具有很强的可伸缩性、可维护性或不适合单元测试,但非常适合于一个小应用程序,它并不比大多数对象所封装的大多少。您可以使用NSCache。请看[如何使用NSCache][1]。[1]: