1

私が知る限り、nib ファイル内のオブジェクトを参照する通常の方法は、IBOutletオブジェクトを作成し、それを Interface Builder で青い線で接続することです。

しかし、Lynda.com でビデオを見たところ、トレーナーはそれを行う代わりにUIView、ヘッダー ファイルにオブジェクトを作成し、それをUIViewInterface Builder のオブジェクトに接続していました。

だから私の質問は: IBOutletIB のオブジェクトと同じクラスのオブジェクトを単に使用する代わりに、オブジェクトを使用する利点は何ですか? 違いはありますか?

4

2 に答える 2

4

IBOutletInterfaceBuilderへの単なるヒントです。IBOutletsは何でもかまいません。UIView、、、UIButtonなどUITextView

@property (nonatomic, retain) IBOutlet UIView * Foo;

上記の例では、Fooとは何ですか?IBOutletまたはUIView?両方です。しかし、あなたの質問はそれを許していません。

ここでAppleのドキュメントを確認することをお勧めします:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCTutorial/06Controller/06Controller.html

彼らがIBOutletの役割をさらに説明するところ:

オブジェクトは、アウトレットにメッセージを送信することにより、アプリケーション内の他のオブジェクトと通信できます。アウトレットは、アプリケーション内の任意のオブジェクトを参照できます。テキストフィールドやボタンなどのユーザーインターフェイスオブジェクト、モデルオブジェクト(通常はカスタムクラスのインスタンス)、さらにはアプリケーションオブジェクト自体です。アウトレットは、Interface Builderで設定できるため、特別なインスタンス変数です。

と:

注:IBOutletは、Cプリプロセッサーがコンパイル時に削除するnull定義のマクロです。Interface Builderはこれを使用してアウトレット宣言を識別し、アウトレットを視覚的に接続するときにそれらを表示できるようにします。

要約すれば:

IBOutletsはほとんど何でも参照できます。これらは、XIBをロードするときに値を設定できるInterfaceBuilderへの単なるヒントです。実際、このテキストIBOutletはInterface Builderの世界の外ではほとんど意味がないため、Interface Builderを支援する以外の目的では完全に機能しないため、最終製品から削除されます。

私は戻って、あなたが接続していた他のいくつかのものをチェックしIBOutletsます、そしてあなたは確かにそれらが実際にいくつかの実際のタイプを持っていることを発見するでしょう。

于 2011-07-04T17:27:17.367 に答える
2

IBOutletは、IBに「ねえ、これはアウトレットになるはずです!」と示すための単なるキーワードです。これは実際にはオブジェクトタイプではなく、文字通りプリプロセッサによって消去されます。ただし、アウトレットのタイプがUIVIewであると指定した場合、IBは、アウトレットがUIViewタイプのものにのみ接続できることを保証します。

于 2011-07-04T17:26:17.113 に答える