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

好吧,您所有的答案都使用了大量不必要的代码,这些代码已经过时并且不再有效。

我自己找到了一个答案,但我改编并得到了这个:

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

哪个工作正常。

于 2012-10-17T19:15:01.720 回答