【问题标题】:Making sure that objects in nibs are initialized before applicationDidFinishLaunching确保 nib 中的对象在 applicationDidFinishLaunching 之前初始化
【发布时间】:2010-06-29 20:21:21
【问题描述】:
感谢您查看我的问题。
我的应用中有两个视图控制器,每个控制器都有自己的 nib 文件。控制器 1 的实例存储在 MainWindow.xib 中,控制器 2 的实例存储在 Controller1.xib 中。
有没有办法确保在发送应用程序委托之前初始化控制器 2 applicationDiDFinishLaunching?
对于许多其他视图控制器,实际设置要复杂得多,所以我真的不想将所有内容都放入 MainWindow.xib。加上这样做会降低可重用性。
再次感谢!
【问题讨论】:
标签:
objective-c
cocoa-touch
uiviewcontroller
nib
【解决方案1】:
有没有办法确保在发送应用委托之前初始化控制器 2 applicationDiDFinishLaunching?
没有。好吧,也许是的,但这不是视图控制器应该如何工作的。视图控制器用于延迟 nib 的加载,这是一项相当昂贵的操作,直到视图真的非常需要。因此,如果您在调用 applicationDidFinishLaunching 时需要 controller2,则不应将其放在由另一个视图控制器控制的 nib 中。
如果我是你,我会完全停止在 nib 文件中实例化视图控制器,而只是在 applicationDidFinishLaunching: 中创建它们,就像在
-(void)applicationDidFinishLaunching:(UIApplication *)application
{
....
self.controller2=[[Controller2 alloc] init... ];
....
}
【解决方案2】:
我相信applicationDidFinishLaunching 是您可以控制代码的绝对入口点。这可能是最早加载任何东西的地方。