Given that iOS SDK 6.1 is used in Xcode 4.6.3 , does it make a difference to declare the method signature of IBAction
in a header file or not?
Without putting the method declaration in the header file, the app is still able to compile and run without problems. However, the method cannot be seen in a storyboard.
Are there any hidden issues of not declaring the method in the header file? Is there a memory consumption difference?
The entire point of an IBAction
method is to be a public connection point in Interface Builder (using Storyboards or not).
The word IBAction
itself is #define
d as void
. Its only purpose (and the same is true of IBOutlet
) is to allow Xcode to scan your code and find these points where your controller needs to be wired up views via IB. You don't need the IBAction
part of the declaration if you're programmatically connecting a control to that method.
There's no performance difference, but semantically, putting an IBAction
in your implementation file doesn't really make sense. Having an IBAction
means the controller is communicating to an outside object via that method, and that's exactly what header/public @interface
declarations are for.
Only declare it in the .h
file if you want to connect it in your storyboard/interfaz builder or you want to make it public for other classes to call it.
If you just want to make it private and only use it inside your class, there's no need of declaring it in the header file.
There's no memory or performance difference.
Even if you plan to hook it up to the interface builder, it still doesn't have be in the header file. I personally just place them straight into the implementation file.