app delegate中的全局变量不保存

时间:2013-02-11 20:50:22

标签: iphone global-variables appdelegate

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

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

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

在使用对象初始化和初始化之后,我的数组大小由以下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 个答案:

答案 0 :(得分:2)

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

application:didFinishLaunchingWithOptions的文档:

  

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

因此在应用程序之前加载视图:调用didFinishLaunchingWithOptions方法。

这些方法的时间有related SO question