Should I put IBActions in the header file or not?

2019-02-24 12:09发布

问题:

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?

回答1:

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 #defined 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.



回答2:

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.



回答3:

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.