2012-06-03 4 views
5

ペン先に表示されているカスタムオブジェクトのClass Identityではなく、File's Owner's Class Identityを設定し、そこから接続を確立する必要があるのはなぜですか?ファイルの所有者をnilに設定するとどうなりますか? 私には、ファイルの所有者がいなくてもうまく動作するので、そこから接続することの趣旨は何ですか?xcode xibファイルでFileの所有者が必要とするのは何ですか?ファイルの所有者なしで同じことをすることはできますか?

答えて

8

A NIBアーカイブされたオブジェクトグラフを表します。ロードすると、そのオブジェクトグラフが再構成されます。つまり、新しくロードされたオブジェクトグラフが、プログラムの既存のオブジェクトグラフにフックされることが必要です。あなたはそれが離れて立っていることを望んでおらず、他のすべてから切り離されています。

新たにロードされたオブジェクトグラフをプログラムのオブジェクトグラフの残りの部分に接続できる方法はいくつかあります。 1つの方法は、NIBで使用可能な一連のプロキシオブジェクトです。アプリケーションオブジェクトのためのものがあります。別のそのようなプロキシオブジェクトはFile's Ownerです。プロキシオブジェクトは、NIBに表現を持ちますが、NIBには実際には含まれていません。 NIB内の他のオブジェクトとは異なり、NIBがロードされるとプロキシによって表されるオブジェクトは作成されず、NIBがロードされる前に存在します。これらのプロキシは、これらの既存のオブジェクトとNIB内のオブジェクトとの間の接続を可能にする。これは、NIBの新しいオブジェクトグラフをプログラムの既存のオブジェクトグラフに接続する方法です。

MainMenu NIBは珍しいです。これは、Cocoaによるアプリケーションの起動時に自動的に読み込まれます。つまり、既存のオブジェクトの方法にはあまり影響がありません。そのNIBには通常、調整の一種であるappデリゲートのインスタンスが含まれています。しかし、通常、他のタイプのNIBには調整コントローラが含まれていません。 (コントローラにはNSArrayControllerのような仲介コントローラが含まれていますが、それとは異なります)。むしろ、調整コントローラは通常コードで作成され、多くの場合、NIBのロードを担当します。

たとえば、ウィンドウの調整コントローラとしてNSWindowControllerを使用します。ウィンドウはNIBで定義されます。ウィンドウコントローラーはコードでインスタンシエートされます(どのコードでもウィンドウを作成する必要があると判断されます)、NIBがロードされます。 NIBのFile's Ownerでもあります。これは、NIBのウィンドウとトップレベルのオブジェクトを管理します。

ファイルの所有者をnilに設定している場合、a)おそらく非常に単純なNIBをこの時点で処理しており、b)読み込んだNIBからトップレベルのオブジェクトを漏洩している可能性があります。

+0

インターフェイスビルダの左側には2つのセクションがあります。プレースホルダとオブジェクト。 nibにMyViewクラスを作成すると言います。そのクラスは「オブジェクト」セクションに表示され、ペン先とのコンセントアクション接続を行うことができます。私はファイルの所有者クラスをMyViewにした場合、同じ接続を行うことができます。これらの2つの状況を尊重していますか?ありがとう –

+0

NIBを所有するビューは非常に珍しいでしょう。また、2つの異なるオブジェクトの接続も行います。 「あるオブジェクトのプロパティを設定することができますが、別のオブジェクトのプロパティを設定することもできますが、違いは何ですか?実際にNIBにあるビューの接続を作成すると、接続されたオブジェクトが表示されます。 File's Ownerに接続すると、ロードされたときにNIBの所有者として指定されたオブジェクトが、接続されたオブジェクトになります。所有者はNIB内のオブジェクトのいずれにもなることはできません。 –

5

ファイルの所有者は、そのビューのすべてのIBOutletsとIBActionsを含むファイルです。たとえば、クラス「ViewController」があり、それにIBOutlet UIButton *button-(IBAction)changeViewWhenButtonPressed: (id) senderが含まれている場合、アウトレットとアクションを接続できる唯一の方法は、ビューのFile Ownerとして「ViewController」を設定することです。

私は、Class IdentityがFile's Ownerと同義であることは比較的確信しています。

また、これらのリンクは役に立つかもしれません:

What are File Owner and First Responder in iPhone SDK - xCode?

File's Owner Definitions

What is File's Owner

+0

おかげで、私はまだレベル1だと私はできません:

(ペン先ローディングメソッドのパラメータ。基本的に、ファイルの所有者は、単に「所有者」に渡されたどんなオブジェクトです)投票アップ.. –

+0

ケンに私のコメントに答えることができればそれは素晴らしいだろう:) –

3

「ファイルの所有者」は、ペン先のオブジェクトがペン先以外のオブジェクトを参照できる方法で、逆も同様です。 (それを行うもっと複雑な方法もありますが、頻繁に使用されることはありません。)必要がない場合は、ファイルの所有者を使用する必要はありません。

メインアプリケーションの場合、ファイルの所有者はApplicationオブジェクトです。すべてのアプリケーションロジックがカスタムクラスにあり、ペン先でインスタンス化されている場合や、アプリケーションに送信されるアクションメッセージに「first responder」を使用する場合は、接続する必要はありません。これで結構です。

ドキュメントウィンドウやポップオーバーなどがある場合は、ファイルの所有者が頻繁に表示されるオブジェクトなので、uiを添付すると便利です。同じペン先を何度も読み込むことができます。同じペン先は、そのクラスの別のインスタンス(異なるドキュメントや検査オブジェクトなど)によってそれぞれ所有されています。迅速な対応のための

関連する問題