5

私が経験したドキュメンテーションとサンプル コードに基づいて、xcode で定義されたクラスが Interface Builder に読み込まれ、構成されたときに、クラスに基づくオブジェクトが効果的に作成され、xib または nib ファイルに格納されるという印象を受けました。 . そのため、対応するアプリケーションが起動されると、オブジェクトを使用する準備が整います。

または、Interface Builder で処理されていないクラスの場合、関連付けられたオブジェクトを作成して使用するには、"new" ステートメントなどのコードを xcode で明示的に記述する必要があります。

私よりも知識のある人が、Interface Builder についての私の非常に素朴な理解を確認または修正してくれるととてもうれしいです...

4

2 に答える 2

6

あなたの理解は正しいですが、不完全です。はい、Interface Builder はクラスをインスタンス化し、それらを NIB にシリアル化します。ただし、これらのオブジェクトは、コードで自動的に使用できるわけではありません。

Xcode を介してアクセスする IB オブジェクトごとに、IBOutlet 変数を宣言する必要があります。例:

IBOutlet NSWindow* mainWindow;  // A Reference to your main window

このコードを、Interface Builder でインスタンス化するカスタム オブジェクトのヘッダー ファイルに挿入します (汎用オブジェクトをクラス リストにドラッグし、インスペクターの [ID] タブでカスタム オブジェクトをクラスのインスタンスに設定します)。次に、Interface Builder でカスタム オブジェクトを右クリックします。ポップアップするウィンドウに IBOutlet のエントリが表示されます。その横にある小さな円からメイン ウィンドウ (この例では) にドラッグします。これで、Xcode に IB オブジェクトへの参照ができました。

アプリケーションの動作の大部分を定義するのは、これらの接続 (参照用の IBOutlets とメソッド用の IBActions を使用) を作成することによって行われます。

于 2011-01-15T04:53:03.953 に答える
2

Nib ファイルには、オブジェクト グラフのアーカイブ コピーが含まれています。nib ファイルに格納されたすべてのオブジェクトの新しいインスタンスを作成し、nib のバインディングによって記述されているように接続し、それらのプロパティを nib で指定された値に設定するために、NSNib または NSBundle が知る必要があるすべてのこと。

完全なプロセスは、オブジェクトのロード プロセスに記載されています。

オブジェクトは nib から自動的に作成されるのではなく、オブジェクトがその nib ファイルをロードするのに応じてオンデマンドで作成されます。1 つのオブジェクトに nib を複数回ロードさせることも、複数のオブジェクトに同じ nib ファイルをロードさせることもできるため、この違いは重要です。

たとえば、「ファイルの所有者」が UIViewController であり、単一の UIView オブジェクトをファイルの所有者の「ビュー」プロパティにバインドする nib を作成する場合があります。次に、2 つの異なる UIViewController サブクラス (または同じ UIViewController サブクラスの 2 つのインスタンス) に同じ nib ファイルをロードさせて、それぞれが独自の UIView のコピーを取得することができます。同様に、テーブルの新しいセルが必要になるたびに、ペン先から新しい UITableViewCell をロードすることがあります。

于 2011-01-15T09:13:21.133 に答える