 <p>I see no problem using the second version. I usually use the second version, only using the first version if the sender may be more than one type of object. Then, if the method needs to know what type of object, the method can query the sender before casting the sender to a particular type. </p> <p>Even more frequently I find no need to access the sender, so I just use:</p> <pre><code>- (IBAction)buttonPressed { // Do something. } </code></pre>