应用程序委托中的全局变量未保存
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。
【讨论】:
在 *** 上,您通过投票和接受答案来表示感谢。请。 :)以上是关于应用程序委托中的全局变量未保存的主要内容,如果未能解决你的问题,请参考以下文章