文档说明方法签名必须如下所示:
- (IBAction)doSomething:(id)sender;
但我可以使用其他签名来执行操作,例如:
- (IBAction)doSomething:(UIButton *)button; // could write sender instead of
// button, but result is the same
它有效,但是
- 如果我按住 cmd 并单击选择器,Xcode 不会重定向
- 这违反了约定。
在方法签名中向发送者添加类型是一种不好的做法还有其他原因吗?
最佳答案
这两个语句都可以正常工作。
我怀疑 cmd+click 没有重定向您,因为您是 cmd+clicking 方法名称中的参数。单击参数时,cmd+click 不稳定。我建议您坚持单击方法名称,它应该可以正常工作。我发现如果您正在获取文档(选项 + 单击),同样的事情也适用。
同样,发件人可以比 id 更具体。如果您使用图形方法将按钮连接到您的代码,这实际上是一个选项:您可以选择 id 或 UIButton。
这里的参数名称“button”是无关紧要的。您可以将其命名为 MountKilimanjaro,因为该参数/变量名称是该方法的本地名称。
希望这对您有所帮助。
关于ios - (id)sender 在方法签名中作为目标操作模式中的选择器传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22964299/