2011-11-01 21 views
5

私は最初にiOS 4用のアプリを開発しましたが、今ではiOS 5 SDKが開発され、私のアプリが壊れているようです。Objective-C - iOS 4からiOS 5までのアプリ起動メソッドの違いは?

私は各タブにナビゲーションコントローラを備えたタブバーアプリケーションを持っています。

iOS 4では、起動後に最初に-application:didFinishLaunchingWithOptions:メソッドにあったものが実行されました。そのメソッドが実行された後、最初のタブのビューコントローラがロードされました。

だから私は私のスタートアップアプリのプロセスをログインしたとき(のためのシミュレータを実行しているiOSの4.3)それは次のようになります。私は私のスタートアップアプリのプロセスをログイン時にのiOS 5.0用のシミュレータを実行している(今

-[AcandoAppDelegate application:didFinishLaunchingWithOptions:] [Line 35] didFinishLaunchingWithOptions method running 
-[AcandoAppDelegate application:didFinishLaunchingWithOptions:] [Line 60] This should be executed first // And it does as it should 
-[AcandoAppDelegate applicationDidBecomeActive:] [Line 254] applicationDidBecomeActive method running 
-[SeminarsViewController viewDidLoad] [Line 58] 2 - viewDidLoad method running 
-[SeminarsViewController viewDidLoad] [Line 60] This should be executed second // Also as it should 
-[SeminarsViewController viewWillAppear:] [Line 123] 3 - viewWillAppear method running 
-[SeminarsViewController viewDidAppear:] [Line 173] viewDidAppear running 

)これは次のようになります。

-[AcandoAppDelegate application:didFinishLaunchingWithOptions:] [Line 35] didFinishLaunchingWithOptions method running 
-[SeminarsViewController viewDidLoad] [Line 58] 2 - viewDidLoad method running 
-[SeminarsViewController viewDidLoad] [Line 60] This should be executed second // So this should be executed second but is executed first 
-[SeminarsViewController viewWillAppear:] [Line 123] 3 - viewWillAppear method running 
-[AcandoAppDelegate application:didFinishLaunchingWithOptions:] [Line 60] This should be executed first // And this is executed second but should be executed first 
-[AcandoAppDelegate applicationDidBecomeActive:] [Line 254] applicationDidBecomeActive method running 
-[SeminarsViewController viewDidAppear:] [Line 173] viewDidAppear running 

ここには何かが分かりません。私にとっては、iOS 4とiOS 5の2つの異なるスタートアップ状況があるようですね。

+0

これを複数回テストすると、結果は同じですか? –

+0

はい結果は毎回同じです。 iOS 4と比較して、iOS 5では.xibファイル(私の場合はMainWindow.xib)の処理が異なりますか? –

答えて

1

アプリの起動が成功するのは、これらのイベントの特定のシーケンスに依存するのはなぜですか?上記のシーケンスには何も問題が起こらないはずです。あなたのコードは正確な基本的な起動シーケンスを知らないようにすべきです。

これが原因で問題が発生している理由を説明するコードを入力できますか?

+0

私が依存している '-application:didFinishLaunchingWithOptions:'メソッド内のいくつかのオブジェクトを初期化するには、最初のタブでView Controller(SeminarsViewController)をロードする前に初期化する必要があります。 iOS 4では起動が "成功"(私のコードは意図した通りに動作する)ですが、まったく同じコードがiOS 5とは違って動作しています。どういうわけか彼らは何らかの形で-application:didFinishLaunchingWithOptions: iOS 4からiOS 5まで動作します。 –

+1

Ahh ok。私はインターフェイスビルダーではなく、コードを介してView Controllerに接続する傾向があります。これにより、View Controllerが作成されたとき(およびその後のビューがロードされたとき)を完全に制御できます。 –

+0

しかし、MyOSがiOS 4またはiOS 5で実行されているかどうかによって、My codeの動作が異なるのはなぜですか? –

関連する問題