(id)发送者在方法签名中作为目标 - 动作模式中的选择器传递

时间:2014-04-09 13:36:50

标签: ios objective-c xcode ibaction

文档说方法签名必须如下:

- (IBAction)doSomething:(id)sender;

但我可以使用其他签名进行操作,例如:

- (IBAction)doSomething:(UIButton *)button; // could write sender instead of
                                            // button, but result is the same

它有效,但

  • 如果我cmd +点击选择器
  • ,Xcode不会重定向
  • 这违反惯例。

为什么在方法签名中向发件人添加类型是一种不好的做法还有其他原因吗?

1 个答案:

答案 0 :(得分:1)

这两个陈述都很好。

我怀疑cmd + click没有重定向你,因为你是cmd +点击方法名称中的参数。单击参数时,cmd +单击不稳定。我建议你坚持点击方法名称,它应该工作正常。如果您正在获取文档(选项+单击),我发现同样的事情适用。

同样,发件人可以比id更具体。如果您使用图形方法将按钮连接到您的代码,这实际上是一个选项:您可以选择id或UIButton。

此处“按钮”参数的名称无关紧要。您可以将其命名为MountKilimanjaro,因为该参数/变量名称是方法的本地名称,所以它会很好。

希望这有帮助。