将发件人作为id或特定类转发给IBAction

时间:2011-08-31 12:37:47

标签: objective-c ios uibutton

我在IBAction语句中看到两种处理发送方对象的方法。第一个看起来像这样:

-(IBAction)buttonPressed:(id)sender{
 UIButton*someButton=(UIButton*)sender;
 //do something with someButton.tag or whatever
 }

另一个似乎更容易:

 -(IBAction)buttonPressed:(UIButton*)sender{
  //do something with sender.tag or whatever
  }

我通常选择版本2.如果你知道只有一个按钮会发送到这个方法,那么任何一个特别的理由比另一个更喜欢一种风格?

如果任何可以是发件人,如按钮,开关或滑块等,我可以看到版本1的好处。但是如果您正在寻找UIButton属性,例如{ {1}}如果您的发件人不是tag,则不会产生太大影响。因此版本2似乎更直接。

我想我是否会错过一个明显的理由来选择版本1。

1 个答案:

答案 0 :(得分:5)

我发现使用第二个版本没问题。我通常使用第二个版本,如果发件人可能是多种类型的对象,则仅使用第一个版本。然后,如果该方法需要知道什么类型的对象,则该方法可以在将发送者转换为特定类型之前查询发送者。

更频繁地我发现不需要访问发件人,所以我只使用:

- (IBAction)buttonPressed {
  // Do something.
}