15

C/C++ の時代にさかのぼると、私が本当にハングアップした言語の部分はポインターでした。もちろん、私は今それらを理解しています。

次に、Interface Builder プロキシ オブジェクト、またはさらに重要なこととして、Interface Builder の使用方法と、特定の XIB の .XIB ウィンドウ (ファイルの所有者、ファーストレスポンダーなどを含むウィンドウ) に何を配置するかについて説明します。

Xcode の例と Web の両方で見つかった書籍やサンプルから、かなりの数の例を調べてきました。彼らは役に立ちましたが、私はまだ少し迷っています。

IB を理解することは、Mac/iPhone/iPod touch アプリケーションの書き方を理解する上で非常に重要であると感じています。

これまでに、次のリソースを確認しました: Aaron Hillegass の Mac OS X 用 Cocoa プログラミング 実用的なプログラマー向けリソース: Xcode での生産性向上 (スクリーンキャスト) Objective-C 2.0 での Cocoa プログラミング コーディング (スクリーンキャスト) 初めての iPhone アプリケーションの作成 (スクリーンキャスト) iPhone SDK開発

また、Apple の Interface Builder ユーザーズ ガイド PDF も確認しました。

提案されたヒント/リソースは大歓迎です!

4

4 に答える 4

44

まず、ここでは、プレースホルダーはプロキシよりも優れた言葉です。

通常、NIB / XIBファイルにオブジェクトがある場合、NIBファイルをロードするとそのインスタンスが作成されることを意味します。プレースホルダーオブジェクトは、NIBファイルがロードされたときにすでに存在するオブジェクトであり、NIBの内部に表示されるため、NIBをロードすることによって作成されるオブジェクトと既存のオブジェクトを接続できます。

ファイルの所有者、ファーストレスポンダー、およびアプリケーションはすべてプレースホルダーです。

ファイルの所有者は、ペン先をロードするオブジェクトのプレースホルダーです。すべてのNIB読み込みメソッドは、「owner」パラメーターを取ります。ファイルの所有者と接続する場合、実行時にファイルが確立されると、nibloadingメソッドに渡される所有者オブジェクトに接続されます。多くのUIKitおよびAppKitクラスは、nibロードメソッドを呼び出します。NSApplication、、、、およびすべてがあなたNSViewControllerに代わってNIBファイルをロードします。彼らがそうするとき、彼らは所有者パラメータとして自分自身をnibloadingメソッドに渡します。そのため、ビューコントローラまたはウィンドウコントローラを使用する場合は、ファイルの所有者をサブクラスに設定し、ビューとファイルの所有者の間の接続を最大限に活用します。NSWindowControllerUIApplicationUIViewController

NSApplicationインスタンスは、の単純なプレースホルダーです[NSApplication sharedApplication]。これはグローバルシングルトンであり、InterfaceBuilderのアイコンはそのグローバルシングルトンを表しています。NSApplicationNIBファイルをロードしても、2番目のインスタンスは作成されません。対照的に、NIBファイルにウィンドウが含まれている場合、それを12回ロードすると、ウィンドウインスタンスは12個になりますが、インスタンスは1つになりNSApplicationます。

ファーストレスポンダーはユニークです。アクションをファーストレスポンダーに接続するということは、アクションが実行されたときに、アクションがレスポンダーチェーンに動的に送信される必要があることを意味します。レスポンダーチェーンは通常、フォーカスされたビューから始まり、ビュー階層まで続き、いくつかのコントローラーとデリゲートが含まれます。チェーン内の各オブジェクトは、アクションの処理を開始します。メニュー項目はレスポンダーチェーンでうまく機能します。現在選択されているテキストを太字にする「太字にする」のメニュー項目がある場合は、それをに接続することから始めることができます。NSApplicationサブクラスですが、「太字にする」が適用されるすべての状況と、それらの処理方法を知っている必要があります。テキストビューと編集可能なWebビューは、「太字にする」を処理するためにおそらく異なるコードを必要とし、これをすべて1つのオブジェクトにまとめると、非常に複雑になり、あまり拡張できなくなります。代わりに、「太字にする」メニュー項目のアクションをmakeBold:ファーストレスポンダーのアクションに接続することができます。これは、メニュー項目が選択されたときに、フォーカスされたオブジェクト、またはに応答したその親の1つがメッセージを受け取ることを意味しmakeBold:ますmakeBold:。これで、多くのクラスがメソッドを実装しmakeBold:、フォーカスが合ったときにこのメニュー項目に応答できるようになりました。

于 2009-05-20T06:46:30.260 に答える
1

Apple には、Interface Builder NIB/XIB ファイルにあるFile's OwnerFirst Responder、およびApplicationプレースホルダー オブジェクトを説明する次のドキュメントがあります。

Interface Builder ユーザー ガイド: プレースホルダー オブジェクト

あなたの質問で、Apple の Interface Builder のドキュメントを読んでいることに気づきましたが、今後の参考のためにここに投稿するのが適切だと感じました。また、あなたの質問が最初に尋ねられたときからドキュメントが更新されているため、それ以降、ドキュメントがより明確になっている可能性があります。

于 2010-02-06T00:14:51.573 に答える
1

"File's Owner" (nib/xib がロードされたときに接続される) を除いて、IB で作成するオブジェクトはプロキシ オブジェクトではなく、実際のオブジェクトです。

IB がどのように接続するかを確認するために、いくつかの既存のサンプル コードに目を通すことをお勧めします。あなたが読んだドキュメンテーション/チュートリアルの中で、あなたを混乱させるものはありますか? 「ちょっと迷う」と大したことはできません。

于 2009-04-25T17:01:10.787 に答える
0

これが役立つかもしれません: http://crazyviraj.blogspot.com/2009/05/cocoa-what-is-files-owner-in-nib.html

于 2009-07-07T17:13:31.277 に答える