2011-11-15 17 views
1

Appleのドキュメントでは、nsapplicationがメインペン先のファイル所有者であることを示しています。これはちょうどテンプレートによって設定されているのですか、またはこの方法でロードされる最初のペン先をロードする必要がありますか?ファイル所有者とnsapplication、appdelegate

また、私はファイルの所有者についての残りの記事を読みましたが、何かが私を混乱させます。 Iboutletがnibsファイル所有者のプロパティであり、オブジェクトがそのnib内に見つかった場合、IBoutletはオブジェクトのみをポイントできますか?ペン先はオーナーのクラスを知る必要があるのはなぜですか?オブジェクトに加えて?これを知っているか知らないことによって、有効または無効にされるのは何ですか?

さらにもう1つ、この画像にはどこのアプリケーションが適していますか?あなたは、アプリケーションデリゲートを変更することはできますか?

+0

[Apple Doc - 最初のiOSアプリケーションの作成](http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iPhone101/Articles/00_Introduction.html#//apple_ref/) doc/uid/TP40007514);具体的には、*基本的なデザインパターンを理解する*の部分です。 – chown

+1

私はそれほど多くのことを理解しています。詳細は – rubixibuc

答えて

9

のXcodeのアプリケーションテンプレート:-)

おかげで、その所有者としてNSAppをロードするMainMenu.xibを設定します。これはNSApplicationMain関数によって行われます。 NSApplicationMainは、アプリのInfo.plistファイルのNSMainNibFileというキーを検索します。そのキーを見つけたら、対応する値をロードするnibファイルの名前として使用します。 XcodeのアプリテンプレートはNSMainNibFileMainMenuに設定されています。

このようにする必要はありません。 Info.plistNSMainNibFileのエントリを変更または削除することができます。あなたはでなくてもを使用することができますNSApplicationMain。代わりに([NSApplication sharedApplication]を呼び出して)を初期化してから、ユーザーインターフェイスをプログラムで作成するか、nibsを読み込んでから[NSApp run]を呼び出してください。

nibローダーは、ロードするペン先のオブジェクト、またはFile's Owner、First Responder、またはApplicationにのみアウトレットを接続できます。アウトレット自体はFile's Ownerである必要はありません。ペン先の任意のオブジェクト上に置くことができます。

Fileの所有者のクラスを設定すると、Interface Builderはソースコードをスキャンして、そのクラスの宣言を検索します。これは、File's Ownerが持つべきアウトレットとアクションを知る方法です。

一般に、アプリケーションデリゲートはアプリケーションのトップレベルコントローラです。さまざまなアプリケーションレベルのイベントが発生したときに通知されます。 NSApplicationDelegate Protocol Referenceを見てください。

Xcodeのアプリケーションテンプレートでは、アプリケーションデリゲートはMainMenu.xibのオブジェクトです(ペン先にはユーザーインターフェイス以外のオブジェクトを持つことができます)。ファイル所有者のdelegateコンセントに配線されています。必要に応じてクラスを変更することができます。ペン先からオブジェクトを完全に削除することもできます。しかし、どんな深刻なアプリにもアプリケーションデリゲートが必要です。

+0

です。ありがとう、私は何かを理解していることを確認したい:唯一のオブジェクトペン先内のオブジェクトにアクセスできます(接続先と接続先の両方)、そのペン先とプロキシオブジェクト内のオブジェクトですか?もしそうなら、なぜこの制限が設定されますか? – rubixibuc

関連する問題