2012-02-04 11 views
5

私はObjCとiOSの開発を研究しています。私のアプリケーションで使用するコンポーネントはすべてプログラムで作成されます(ビュー、ボタン、ラベルなど)。代わりにvoidを使用する方法の戻り値の型としてIBAction

は、ここで私は、私は、セレクタの戻り値の型として代わりにIBActionの空隙を使用することができることに注意してください私のコード

... 
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[self.btn addTarget:self 
        action:@selector(someAction:) 
     forControlEvents:UIControlEventTouchDown]; 
.... 


-(void)someAction 
{ 
logic 
} 

です。これは正しいアプローチですか? 落とし穴がありますか?

+0

[IBOutletとIBAction]の可能な複製(http://stackoverflow.com/questions/1643007/iboutlet-and-ibaction) –

答えて

17

を使用するIBActionは、メソッドをInterface Builderでアクションメソッドとして使用できるようにXcodeに指示します。それが唯一の効果です。それ以外の場合はvoidと同じです。 UINibDeclarations.hで実際には、これを見つける:

IBActionを使用して
#define IBAction void 

あなたはnibファイルを使用していない場合でも、良いアイデアです、それはあなたが意図したリーダー(あなたや同僚)への信号であるため、このメソッドをUIコントロールのアクションとして使用します。

+0

新しいトピックを作成してください。 IBを使用する代わりに、プログラムですべてを作成することをお勧めします。たぶん狂ったように聞こえるかもしれませんが、そのアプローチは私にとっては最も簡単です。彼らはそのアプローチを使用することの何らかの欠点ですか? – objlv

+4

はい、問題があります。 IBを使用するか使用しないかは、宗教的な議論である傾向があります。私はそれを大きく使います。 Appleのサンプルアプリケーションのほとんどはそれを使用しています。私は、それを使用しない人は定型コードをたくさん書いて、コード内のビューの座標、色、フォントサイズを調整する編集 - コンパイル - 実行サイクルを頻繁に行っていると思います。 –

+0

Xcodeのエディタには、接続されているかどうかを示す小さなアイコンがあります。非IBメソッド/プロパティにIBAction/IBOutletを使用すると、混乱する可能性があります。しかし、とにかく、それは味の問題です。 – hoshi

関連する問題