Мне нравится использовать определенные классы.
Objective-C не заставляет вас писать правильный тип, потому что это динамический язык, но компилятор может предупредить вас о некоторых очевидных ошибках.
Кроме того, свойства из Objective-C 2.0 не работают с типом id
.
В вашем конкретном примере с IBAction
я бы использовал id
, потому что действие должно вызываться из чего угодно, не только из кнопок.