2011-09-10 9 views
3

XCode 4.2から、XCode 4.2を使用して空のプロジェクトを作成すると、MainWindow.xibは作成されなくなりました。私はこれを行う方法を記述した記事を見つけたので、それをやっていますが、このプロセスが何かを教えてくれれば、main()、AppDelegateとMainWindowの仕組みはわかりません。 xibは一緒に存在します。MainWindow.xibを空のプロジェクトに接続する方法

http://www.trappers.tk/site/2011/06/16/mainwindow-xib/

  • はなぜMainWindow.xibクラスはのUIApplicationに更新されますか?
  • オブジェクトがxibに配置され、そのクラスに対してAppDelegateクラスが選択されているのはなぜですか?
  • ファイル所有者の代理人アウトレットがAppDelegateオブジェクトに接続されているのはなぜですか?
  • なぜAppDelegateのウィンドウアウトレットがウィンドウに表示されますか?
  • なぜ - (BOOL)application:didFinishLaunchingWithOptions:コメントアウトする必要があるのですか?

私は周りに調査しましたが、私はまだだアプリケーションが起動したら、すべてがアップロードされているかを100%確実ではない、とこれでセットアップが必要な理由だけでメインウィンドウを持っています。私はおそらく、これらのすべての概念をiOS開発の進歩を続けるために落とさなければならないと感じています。

答えて

4
  • に役立ちますか?

最下位レベルのnibファイルは、[ - UINib instantiateWithOwner:options:]という方法でロードされます。 nibファイルのFile's Ownerはプレースホルダです。 Xcodeでは、まだ特定のオブジェクトではありません。 nibファイルがロードされると、実際のオブジェクトに解決されます。その目的は、排出口と動作を介して、ペン先のペン先のオブジェクトとペン先のオブジェクトを関連付けることです。そのUINibメソッドの "instantiateWithOwner:"パラメータとして渡されるオブジェクトは、Interface BuilderのFile's Ownerプレースホルダが解決するオブジェクトです。

UIApplicationはinfo.plistで指定されたnibファイルをロードし、nibファイルをロードするときにownerパラメータに 'self'を渡します。

クラス名を設定することで、設定できるアクションとアウトレットのセットを提案できるようになります。

  • オブジェクトがxibに配置され、そのクラスに対してAppDelegateクラスが選択されているのはなぜですか?

汎用オブジェクトをxibに配置し、そのクラスを 'AppDelegate'に変更すると、ファイルがロードされるときにXcodeに 'AppDelegate'のインスタンスをインスタンス化するように指示します。

  • ファイル所有者の代理人アウトレットがAppDelegateオブジェクトに接続されているのはなぜですか?

UIApplicationには責任が委譲され、興味深いイベントが発生したときに通知する「代理人」があります。この接続を行うと、アプリケーションのデリゲートプロパティが上記で指定したインスタンスに設定されます。その時点から、このインスタンスは-application:didFinishLaunchingWithOptions:のように、UIApplicationからデリゲートメッセージを受け取ります。

  • AppDelegateのウィンドウアウトレットはなぜウィンドウに表示されますか?

アウトレットは、xibの内部のオブジェクトを参照する方法です。それらは、アウトレットが指すオブジェクトを参照するようにプロパティまたはインスタンス変数を設定します。このアウトレットを作成するときは、上記で作成したアプリケーションデリゲートインスタンスが、xibがロードされたときに作成されたウィンドウを参照する方法を持つようにします。

  • なぜ - (BOOL)application:didFinishLaunchingWithOptions:コメントアウトする必要があるのですか?

これは、xibで起こっていることと同じことをいくつか行うためのコードに焦点を当てています。両方が存在する場合、それらは互いに上書きされます。

+0

素晴らしいもの!ほんの数回の簡単な説明。 AppDelegateは、主にUIApplicationの「イベント」を受け取る責任を委任するために使用されるため、AppDelegateクラスは1つしかありませんか?また、MainWindow.xibは、AppDelegateと他のオブジェクト(コントローラクラスなど)をインスタンス化する「もの」ですか? – 5StringRyan

+0

ええ、アプリケーションは1つだけのアプリケーションデリゲートクラスを持っています。 UIApplicationはシングルトンであり、 'delegate'プロパティは1つのオブジェクトしか保持しません。 "また、MainWindow.xibは、AppDelegateと他のオブジェクト(コントローラクラスなど)をインスタンス化する"もの "ですか?これは、このプロジェクトでやっていることですが、これを行う方法ですが、他の方法があります。たとえば、デリゲートクラスの名前をUIApplicationMain()に渡して、残りのオブジェクトをapplication:didFinishLaunchingWithOptions:でインスタンス化します。 –

0

XIBファイルに配置されるオブジェクトは、インターフェイスビルダのすべての接続を委任するため、AppDelegateです。つまり、ボタンをクリックするとテキストが表示されるメソッドを記述すると、そのメソッドはApp Delegateまたはファイルの所有者、好ましくは代表者。 UIApplicationであるため、ファイルの所有者は、そのオブジェクトをApp Delegateに割り当てるため、デリゲートに接続します。私はあなたの質問の残りの部分に答えることができなかったことを申し訳ありません、彼らは本当に意味をなさないでした。

希望MainWindow.xibクラスはのUIApplicationに更新されてなぜこれが

+0

ええ質問のほとんどは、MainWindow.xibを "フックアップ"する手順を段階的に示した私が提供したリンクに基づいていますが、面白いことに、あなたはあなた自身であった。 – 5StringRyan

+0

私が知っているのは、最初は私にとっては難しいことでしたが、実際に何が起こっているのかを実際に知るには練習が必要です。がんばろう! –

関連する問題