I am very new to iPhone development. I often encounter IBAction
, IBOutlet
and so on when reading Objective-C and Swift code. What does IB
"Interface Builder".
Before Xcode 4, the interface files (XIBs and NIBs) were edited in a separate program called Interface Builder, hence the prefix.
IBAction
is defined to void
, and IBOutlet
to nothing. They are just clues to Interface Builder when parsing files to make them available for connections.
Just to add the reference, inside AppKit/NSNibDeclarations.h you'll find these:
#ifndef IBOutlet
#define IBOutlet
#endif
#ifndef IBAction
#define IBAction void
#endif
So, actually, code like this:
@interface ...
{
IBOutlet NSTextField *label;
}
- (IBAction)buttonPressed:(id)sender;
@end
Will be transformed into:
@interface ...
{
NSTextField *label;
}
- (void)buttonPressed:(id)sender;
@end
By the preprocessor, even before the compiler sees it. Those keywords were acting just as clues to Interface Builder.