将发件人作为id或特定的类投射到IBAction

我看到两种方法来处理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 } 

我通常select版本2.如果你知道只有一个button将被发送到这个方法,那么有什么特别的理由可以select一种风格呢?

我可以看到哪里版本1是好的,如果有什么东西可以是一个发件人,如button,或开关或滑块等,但如果你正在寻找像tag UIButton属性,它不会有太大的区别,如果你的发件人不是一个UIButton 。 所以版本2似乎更直截了当。

只是以为我会看到如果我错过了一个明显的理由更喜欢版本1。

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

更频繁的我发现没有必要访问发件人,所以我只是使用:

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