4

重複の可能性:
ブロックを Objective-C で @selector として渡すことはできますか?

私はこのコードを持っています:

[myButton addTarget:self action:@selector(doSomething:) forControlEvents:UIControlEventTouchUpInside];

しかし、doSomething にはコードがほとんど含まれていないため、doSomething を実行させるのではなく、コードをそのままここに入れることができるかどうか疑問に思っていました。

私はすでにこれを試しました:

[myButton addTarget:self action:^ { /* code here */ } forControlEvents:UIControlEventTouchUpInside];

しかし、「(void)^(void)を互換性のないタイプのSELに送信しています」というエラーが発生するだけです。

これを行う方法はありますか?もしそうなら、正しい構文は何ですか?

ありがとう!

4

1 に答える 1

6

ええと、あなたの答えはすべて、ひどく時代遅れでもはや機能しない多くの不要なコードを使用しています。

私は自分で1つの答えを見つけましたが、それを適応させてこれを取得しました:

[myButton addTarget:[^{NSLog(@"Pressed the button");} copy] action:@selector(invoke) forControlEvents:UIControlEventTouchUpInside];

これは問題なく動作します。

于 2012-10-17T19:15:01.720 に答える