【问题标题】:application: didFinishLaunchingWithOptions doesn't execute, but RootViewController: viewDidLoad does, how is this possible?application: didFinishLaunchingWithOptions 不执行,但 RootViewController: viewDidLoad 执行,这怎么可能?
【发布时间】:2010-05-14 04:26:47
【问题描述】:

我正在使用 iPad SplitView 模板,在我开始换出 RootViewController 中的视图对象之前它运行良好。当它工作正常时,将调用 application:didFinishLaunchingWithOptions 方法并设置我的持久存储对象,然后调用 RootViewController:viewDidLoad 方法以使用我的存储中的数据填充我的 rootView。我打开了 IB 并开始在我的 RootView 中换出视图对象,现在 application:didFinishLaunchingWithOptions 方法永远不会被调用,但 RootViewController:viewDidLoad 方法仍然可以。显然,应用程序崩溃是因为 viewDidLoad 方法依赖于 didFinishLauchingWIthOptions 方法的成功执行来设置持久存储对象。有人对造成这种情况的原因有任何想法,或者我可以如何调查造成这种情况的原因吗?

我显然是 iPhone OS 开发的新手,所以如果这个问题有任何荒谬之处,我深表歉意。非常感谢您的帮助!

【问题讨论】:

    标签: iphone ipad


    【解决方案1】:

    这可能是因为在 MainWindow.xib 中,您的应用程序委托对象未连接到文件的所有者 (UIApplication)。您可以打开 MainWindow.xib 并右键单击您的 App Delegate 以查看它是否在 Reference Outlet to File's Owner 中有连接。如果没有,请将其设置为。这将解决您的问题。

    【讨论】:

      【解决方案2】:

      -viewDidLoad不是-application:didFinishLaunchingWithOptions:调用的。他们是独立的。调用层次结构可以概括为:

      1. 加载应用程序;致电-application:didFinishLaunchingWithOptions:
      2. 窗口可见,加载视图控制器的视图。
      3. 致电-viewDidLoad

      【讨论】:

      • 谢谢,肯尼!我提出的问题是基于我们对调用层次结构的一致理解。调用层次结构意味着在 didFinishLaunchingWithOptions 完成后调用 viewDidLoad。如果是这种情况并且 didFinishLaunchingWithOptions 永远不会完成(或根本不会执行),那么为什么会调用 viewDidLoad?
      • @Beach:如果-application:didFinishLaunchingWithOptions: 不存在,则直接跳过。这是一种可选方法。
      • 好的,我会调查的。它确实存在于我的代码中,所以我想我需要弄清楚它为什么被跳过。再次感谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-15
      • 1970-01-01
      • 1970-01-01
      • 2017-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多