アプリケーションデリゲート内でのUIViewControllerの手動インスタンス化
-
13-09-2019 - |
質問
私は iPhone 開発を始めたばかりで (.Net 世界から来ています)、この新しい開発プラットフォームのコツを掴むために多くの「Hello World」アプリケーションを試してきました。私が混乱している領域の 1 つは、ビュー コントローラーのインスタンス化です。Apple の「Hello World」チュートリアルでは、デフォルトではビュー コントローラーを持たないウィンドウ ベースのアプリを作成することから始めます。次に、UIViewController を作成し、アプリケーション デリゲートでそのコントローラーを手動でインスタンス化し、その後、ビュー コントローラーをウィンドウに追加するだけです (http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhone101/Articles/03_AddingViewController.html#//apple_ref/doc/uid/TP40007514-CH5-SW5).
対照的に、新しい「ビュー ベースのアプリケーション」プロジェクトを作成してデリゲートの実装を確認すると、そのビュー コントローラーをメイン ウィンドウにリンクするために行われたのは、次の行だけです。[ウィンドウ addSubview:viewController.view];
事前に構築された「ビューベースのアプリケーション」テンプレートがビューコントローラーのビューをウィンドウに追加するだけなのに、チュートリアルでは alloc/init を介してビューコントローラーを手動でインスタンス化する必要があると示されているのはなぜですか?両者の違いは何ですか?
解決
さらに詳しく調べてみると、私自身の質問に対する答えが見つかりました。ビュー ベースのアプリケーションを作成するときに、MainWindow.xib をダブルクリックすると、ドキュメント ウィンドウ内のオブジェクトの 1 つが、[ProjectName]ViewController クラス (ビューベースのアプリケーションを選択したときに自動的に作成されました)。
したがって、ビュー コントローラーをライブラリから MainWindow.xib のドキュメント ウィンドウにドラッグすると、実質的にそのオブジェクトがインスタンス化されます (ただし、オブジェクトは nib ファイルにアーカイブされます)。したがって、アプリケーション デリゲートで手動でインスタンスを作成する必要はありません。そのビュー コントローラーのビューをウィンドウに追加するだけで完了です。