どこでも IBAction とは何かを述べていますが、宣言全体が何を意味するかは説明していません。
送信者とIDとは何ですか?
よろしく、 ナムラタ
どこでも IBAction とは何かを述べていますが、宣言全体が何を意味するかは説明していません。
送信者とIDとは何ですか?
よろしく、 ナムラタ
私の知る限りIBActionでは、void
idは、あらゆる種類/クラスのオブジェクトを受け入れるジェネリック C 型です。のvoid ポインタに似たものCです。id異なる種類のクラスのオブジェクトがそのメソッドにアクセスする場合に備えて、メソッドのパラメーターとして使用できます。
sender、 ここ、
changeGreeting:例:
メソッドchangeGreeting:が で定義されてClassAおり、次のようになっているとします。
- (IBAction)changeGreeting:(id)sender {
[sender setText:@"Hello %@", [sender class]];
// Nothing can be returned from this method
}
に次の行があるとしClass Bます。
// LINE 1
[aLabel addTarget:objOfClassA action:@selector(changeGreeting:) forControlEvents:UIControlEventTouchUpInside];
// LINE 2
[aTextField addTarget:objOfClassA action:@selector(changeGreeting:) forControlEvents:UIControlEventTouchUpInside];
LINE 1 では、aLabelが送信者で、objOfClassAが受信者です。LINE 2:aTextFieldは送信者でobjOfClassAあり、受信者です。ここでaLabel&はメソッドを呼び出しているため、送信者aTextFieldと呼ばれます。ここでメソッドが呼び出されるため、レシーバーと呼ばれます。changeGreeting:objOfClassAobjOfClassA's changeGreeting:
aLabelユーザーがまたはの内側をタッチするとaTextField、それぞれまたはtextに変更されます。Hello UILabelHello UITextField
別の方法:次のようにfromのchangeGreeting:メソッドを
呼び出すこともできます。objOfClassAClass B
[objOfClassA changeGreeting:aLabel];
[objOfClassA changeGreeting:aTextField];
上記のコードは自明でobjOfClassAあるため、レシーバーです。しかしaLabel&aTextFieldは送信者ではありません。メソッドを呼び出していないためです。ここでは、それらは単なる引数です。ここで実際の送信者は ですClass Bが、aLabelとaTextFieldは引数で渡されます(id)sender。いずれにしても、メソッドの実行結果は同じです。
これは非常に基本的なものなので、Objective-C チュートリアル (このような) を確認する必要があるかもしれません。
IBAction は「void」と定義されているため、メソッドに戻り値がないことを意味します。これは Interface Builder にのみ役立つため、どのメソッドが実際にリンクできるアクションであるかを認識します。
(id)sender 部分は、sender という名前のメソッドへの (唯一の) パラメータです。(id) は、パラメーターの型が任意のオブジェクトになる可能性があることを示しています。
IDとは?
これは、Objective-C が任意のオブジェクトに使用する一般的な C 型です。[...]
機能的に言えば: IBAction は、Interface Builder を介してリンクできるメソッドを識別するためのキーワードです。(id)Sender は、複数のコントロールに同じメソッドを使用する場合に、オブジェクトがメソッドをトリガーしていることを識別するために必要です。
IBActionは、Interface Builder がソース コード内で検索するキーワード ( #define'd to void) であり、戻り値の型として検出された場合、IB 要素を関連付けることができる可能なアクションのリストに追加されます。
idは、Objective-C オブジェクトを表す、Objective-C の汎用オブジェクト型です。
型付きパラメータのsender名前です。id