1

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

NSMutableAarrayAppDelegate名为 containerTypeArray 中创建了一个。我在名为的方法中使用对象构建数组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。

有人可以告诉我我做错了什么吗?谢谢!

4

1 回答 1

2

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

application:didFinishLaunchingWithOptions的文档:

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

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

关于这些方法的时间安排有一个相关的 SO 问题。

于 2013-02-11T20:57:51.580 回答