应用程序委托中的全局变量未保存

Posted

技术标签:

【中文标题】应用程序委托中的全局变量未保存【英文标题】:Global variable in app delegate not saving 【发布时间】:2013-02-11 20:50:21 【问题描述】:

我是 iPhone 开发的新手,所以请多多包涵。 我试图从另一个视图控制器访问存储在AppDelegate 中的数组,但是当我这样做时,它告诉我数组是空的。

我在名为 containerTypeArray 的 AppDelegate 中创建了一个 NSMutableAarray。 我用 AppDelegate 方法中的对象构建数组:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

在我用对象初始化和初始化之后,我的数组的大小是 92,由以下 NSLog 消息确认:

NSLog(@"container type size %i", [containerTypeArray count]);

我尝试在不同的视图控制器中引用数组变量。 在这个视图控制器中,我导入 appdelegate.h 文件并在视图中写入以下内容:

 AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
     NSLog(@"count at load %i", [appDelegate.containerTypeArray count]);

这次 NSLog 计数为 0。

谁能告诉我我做错了什么?谢谢!

【问题讨论】:

【参考方案1】:

这是因为application:didFinishLaunchingWithOptions 是在viewDidLoad 之后调用的。

application:didFinishLaunchingWithOptions 的文档:

您应该使用此方法(以及相应的 application:didFinishLaunchingWithOptions: 方法)来初始化您的应用程序并准备运行。此方法在您的应用程序启动并其主情节提要或 nib 文件已加载之后、但在您的应用程序状态恢复之前调用。在调用此方法时,您的应用程序处于非活动状态。

所以视图是在 application:didFinishLaunchingWithOptions 方法被调用之前加载的。

在这些方法的时间安排上有一个related SO question。

【讨论】:

在 *** 上,您通过投票和接受答案来表示感谢。请。 :)

以上是关于应用程序委托中的全局变量未保存的主要内容,如果未能解决你的问题,请参考以下文章

全局变量和局部变量

ExtJS中的全局变量的保存和使用

C++中当未命名空间跟全局变量在一起的时候,怎么调用未命名空间里的变量

一个so库中全局变量未定义引起的问题

局部静态变量只能初始化一次是怎么实现?

内存释放