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