3

XCode 4.2以降、XCode 4.2を使用して空のプロジェクトを作成すると、MainWindow.xibは作成されなくなり、接続されなくなります。これを行う方法を説明する記事を見つけました。これを実行して機能しましたが、このプロセスで何かがわかった場合は、main()、AppDelegate、および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

2 に答える 2

4
  • MainWindow.xibクラスがUIApplicationに更新されるのはなぜですか?

最下位レベルでは、nibファイルはメソッド-[UINib instanceiateWithOwner:options:]でロードされます。nibファイル内のファイルの所有者はプレースホルダーです。Xcodeでは、まだ特定のオブジェクトではありません。nibファイルがロードされると、実際のオブジェクトに解決されます。その目的は、アウトレットとアクションを介して、ペン先の内側のオブジェクトを、ペン先をロードしたオブジェクトと関連付けることです。そのUINibメソッドの「instantiateWithOwner:」パラメーターとして渡されるオブジェクトは、InterfaceBuilderのファイルの所有者プレースホルダーが解決するものです。

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

クラス名を設定することで、ツールにヒントを与えるだけで、確立できる一連のアクションとアウトレットを提案できます。

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

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

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

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

  • AppDelegateのウィンドウアウトレットがウィンドウに接続されているのはなぜですか?

アウトレットは、xib内のオブジェクトを参照する方法です。これにより、プロパティまたはインスタンス変数が、アウトレットが指すオブジェクトを参照するように設定されます。このアウトレットを作成すると、上記で作成したアプリデリゲートインスタンスが、xibの読み込み時にも作成されるウィンドウを参照できるようになります。

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

これは、xibで発生しているのと同じことのいくつかを実行するためのコードに焦点を当てた方法を表しており、両方が存在する場合、それらは互いに上書きします。

于 2011-09-10T09:27:35.390 に答える
0

XIBファイルに配置されるオブジェクトはAppDelegateです。これは、Interface Builderですべての接続を委任するためです。つまり、ボタンをクリックするとテキストが表示されるメソッドを作成すると、そのメソッドはAppDelegateまたはファイルの所有者のいずれかに接続されます。 、できれば代理人。ファイルの所有者は、UIApplicationであるため、特定のオブジェクトをApp Delegateに割り当てるため、デリゲートに接続します。残りの質問には答えられず申し訳ありませんが、あまり意味がありませんでした。

お役に立てれば

于 2011-09-10T02:30:56.593 に答える