Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.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
Iphone 在整个应用程序中共享对象_Iphone_Objective C_Xcode - Fatal编程技术网

Iphone 在整个应用程序中共享对象

Iphone 在整个应用程序中共享对象,iphone,objective-c,xcode,Iphone,Objective C,Xcode,我目前正在为iPhone开发一个应用程序。当我缓存数据(如NSDictionary)以在特定视图中使用时,appdelegate会显示一个启动屏幕。从我需要的视图调用此数据的最佳方式是什么?我不认为将它作为变量在视图之间传递,直到它到达视图才是正确的方法 应用程序委托(带有Splashscreen,应将数据缓存到NSDictionary) | 查看A | 子视图 | 最终视图(这里我想使用缓存的数据) 谢谢:-)如果您正在缓存数据的NSDictionary是应用程序代理的ivar,则您可以使用以

我目前正在为iPhone开发一个应用程序。当我缓存数据(如NSDictionary)以在特定视图中使用时,appdelegate会显示一个启动屏幕。从我需要的视图调用此数据的最佳方式是什么?我不认为将它作为变量在视图之间传递,直到它到达视图才是正确的方法

应用程序委托(带有Splashscreen,应将数据缓存到NSDictionary) | 查看A | 子视图 | 最终视图(这里我想使用缓存的数据)


谢谢:-)

如果您正在缓存数据的NSDictionary是应用程序代理的ivar,则您可以使用以下行从应用程序中的任何位置访问它:

myAppDelegate *delegate = (myAppDelegate *)[[UIApplication sharedApplication] delegate];
NSDictionary *myData = [delegate cachedData];

希望这能回答您的问题。

如果您有一个在整个应用程序生命周期内永远不会发布的对象,并且确实希望它可以从应用程序中的任何位置访问(例如,这样一个简单的调试NSLog就可以从代码中的任何位置打印它的状态),那么这就是全局变量的用途。只需指定一个全局变量,并引用该对象。如果您不介意生成几乎相等但从微观角度看更慢、更大的代码,那么使用合适的getter将其分配给app委托中的实例变量


请注意,使用全局变量违反了封装,它不具有很强的可伸缩性、可维护性或不适合单元测试,但非常适合于一个小应用程序,它并不比大多数对象所封装的大多少。

您可以使用NSCache。请看[如何使用NSCache][1]。[1]: