I known that the identify an action or a field , but what are they ?
They are not classes or structs thats for sure.
But if you dig hard enough in the documentation of Apple, then you find out that they are nothing more than AppKit constants (and macro).
And IBAction is just another name for void, they are used as syntax sugar for XCode and Interfacebuilder so that XCode&InterfaceBuilder can interpret the variables and methods correctly.
And IBOutlet is an empty macro.
You can find them in NSNibDeclarations.h
Conclusion: don't search for anything fancy, they are just void....