【问题标题】: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 是您可以控制代码的绝对入口点。这可能是最早加载任何东西的地方。

      【讨论】:

        猜你喜欢
        • 2018-02-27
        • 2010-10-22
        • 2021-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多