質問

彼らはどこでもIBACTIONが何であるかを言うが、宣言全体が何を意味するのかを説明しないでください。

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

よろしく、ナムラサ

役に立ちましたか?

解決

  1. 私の知識によると IBAction ただ暗示します void

  2. id あらゆる種類/クラスのオブジェクトを受け入れる一般的なCタイプです。それは何に似ているかです ボイドポインター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];

1行目で、 aLabel それは 送信者objOfClassA それは 受信機. 。 2行目: aTextField それは 送信者objOfClassA それは 受信機. 。ここaLabel & aTextField 呼ばれています 送信者 彼らはそうだからです 電話 メソッド changeGreeting:. 。と objOfClassA 呼ばれています 受信機 なぜなら objOfClassA's changeGreeting: 方法はです 呼び出されました ここ。

ユーザーが内部に触れると aLabel また aTextField, 、 彼らの text に変更されます Hello UILabel また Hello UITextField それぞれ。

反対に:電話することもできます changeGreeting: の方法 objOfClassA から Class B 次のように。

[objOfClassA changeGreeting:aLabel];
[objOfClassA changeGreeting:aTextField];

上記のコードは自明であるため、 objOfClassA それは 受信機. 。しかし aLabel & aTextField そうではありません 送信者. 。彼らは方法を呼び出していないからです。ここでは、それらは単なる議論です。ここで実際の送信者はそうです Class B, 、 しかし aLabelaTextField 議論に渡されます (id)sender. 。いずれにせよ、メソッド実行の結果は同じです。

他のヒント

たぶん、Objective-Cチュートリアルをチェックする必要があります(このようなもの)、これはかなり基本的なものだからです。

ibactionは「void」として定義されているため、メソッドに戻り値がないことを意味します。インターフェイスビルダーのみに役立つため、どのメソッドが実際にリンクできるアクションであるかを知っています。

(ID)送信者部分は、メソッドの(唯一の)パラメーターであり、送信者と名付けられています。 (ID)は、パラメーターのタイプが任意のオブジェクトになる可能性があると言います。

から Objective-C FAQ:

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

IBAction キーワードです(#define'd to void)インターフェイスビルダーはソースコードで検索し、リターンタイプとして見つけた場合、IB要素を配線できる可能性のあるアクションのリストに追加します。

id Objective-Cの一般的なオブジェクトタイプです どれか Objective-Cオブジェクト。

sender ただの名前です id-Typedパラメーター。

機能的には、Ibactionは、インターフェイスビルダーを介してリンクできるメソッドを識別するためのキーワードです。 (ID)送信者は、いくつかのコントロールに同じ方法を使用した場合に、オブジェクトがメソッドをトリガーしていることを識別するために必要です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top