【问题标题】:Replacing @selector with direct code [duplicate]用直接代码替换@selector [重复]
【发布时间】:2012-10-17 18:08:40
【问题描述】:

可能重复:
Can I pass a block as a @selector with Objective-C?

我有这个代码:

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

但由于 doSomething 包含的代码太少,我想知道是否可以将代码直接放在这里而不是让它运行 doSomething。

我已经试过了:

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

但它只是给出了“将 (void)^(void) 发送到不兼容类型 SEL”的错误。

有没有办法做到这一点?如果是这样,正确的语法是什么?

谢谢!

【问题讨论】:

  • 你怎么会认为这会起作用?

标签: ios cocoa-touch selector


【解决方案1】:

嗯,你所有的答案都使用了很多不必要的代码,这些代码已经过时并且不再有效。

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

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

效果很好。

【讨论】:

  • 哇。这很聪明。 +1。
  • 在 iOS7 上工作但在 iOS8 上崩溃
猜你喜欢
  • 1970-01-01
  • 2014-03-07
  • 1970-01-01
  • 1970-01-01
  • 2016-02-12
  • 2011-05-04
  • 2014-01-23
  • 2014-08-14
  • 1970-01-01
相关资源
最近更新 更多