应用程序:didFinishLaunchingWithOptions不执行,但RootViewController:viewDidLoad确实如此,这怎么可能?

时间:2010-05-14 04:26:48

标签: iphone ipad

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

我显然是iPhone OS开发的新手,所以如果这些问题在任何方面都是荒谬的,我会道歉。非常感谢您的帮助!

2 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:3)

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

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