0

どこでも IBAction とは何かを述べていますが、宣言全体が何を意味するかは説明していません。

送信者とIDとは何ですか?

よろしく、 ナムラタ

4

4 に答える 4

5
  1. 私の知る限りIBActionでは、void

  2. idは、あらゆる種類/クラスのオブジェクトを受け入れるジェネリック C 型です。のvoid ポインタに似たものCです。id異なる種類のクラスのオブジェクトがそのメソッドにアクセスする場合に備えて、メソッドのパラメーターとして使用できます。

  3. 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が、aLabelaTextFieldは引数で渡されます(id)sender。いずれにしても、メソッドの実行結果は同じです。

于 2011-01-27T07:05:47.207 に答える
2

これは非常に基本的なものなので、Objective-C チュートリアル (このような) を確認する必要があるかもしれません。

IBAction は「void」と定義されているため、メソッドに戻り値がないことを意味します。これは Interface Builder にのみ役立つため、どのメソッドが実際にリンクできるアクションであるかを認識します。

(id)sender 部分は、sender という名前のメソッドへの (唯一の) パラメータです。(id) は、パラメーターの型が任意のオブジェクトになる可能性があることを示しています。

Objective-C FAQから:

IDとは?
これは、Objective-C が任意のオブジェクトに使用する一般的な C 型です。[...]

于 2011-01-27T06:47:49.950 に答える
1

機能的に言​​えば: IBAction は、Interface Builder を介してリンクできるメソッドを識別するためのキーワードです。(id)Sender は、複数のコントロールに同じメソッドを使用する場合に、オブジェクトがメソッドをトリガーしていることを識別するために必要です。

于 2011-01-27T07:06:17.687 に答える
1

IBActionは、Interface Builder がソース コード内で検索するキーワード ( #define'd to void) であり、戻り値の型として検出された場合、IB 要素を関連付けることができる可能なアクションのリストに追加されます。

idは、Objective-C オブジェクトを表す、Objective-C の汎用オブジェクト型です

型付きパラメータのsender名前です。id

于 2011-01-27T06:47:34.987 に答える