2011-07-04 10 views
1

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

しかし私はLynda.comのビデオを見ましたが、その代わりにトレーナーはUIViewオブジェクトをヘッダーファイルに作成し、それをInterface BuilderのUIViewオブジェクトに接続しました。

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

答えて

4

IBOutletは、Interface Builderのヒントです。 IBOutletsは何でもかまいません。上記の例でUIViewUIButtonUITextViewなど

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

、fooが何ですか? IBOutletまたはUIView?それはです。両方ともです。しかし、あなたの質問はそれを許さない。

あなたがここにアップルのドキュメントをチェックアウトする場合があります:彼らはさらにIBOutletの役割を説明しhttp://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCTutorial/06Controller/06Controller.html

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

そして:

注:IBOutletはNULL定義マクロCプリプロセッサが コンパイル時に除去 。 Interface Builderは を使用してアウトレット宣言を識別します。 コンセントを視覚的に接続すると表示されます。要約すると

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

私は戻って、あなたがIBOutletsと接続していたものをいくつかチェックしています。実際には実際のタイプがあることは間違いありません。

+0

もし私たちがIBOutletsをどのように作成すれば、いつメモリが割り当てられますか? – Dev

2

IBOutletは、IBに「これはコンセントにする必要があります!」という意味のキーワードです。実際にはオブジェクト型ではありません。プリプロセッサによって文字通り消去されます。ただし、コンセントがUIVIewタイプであると指定した場合、IBはUIViewタイプのものにのみ接続できることを保証します。

関連する問題