tags:

views:

280

answers:

1

When i go to definition of classes in documentation, i always see these 2 things (UIKIT_EXTERN_CLASS and UIKIT_EXTERN) before the @interface, what these constants stand for and why Apple put it before their classes?

And one more thing, there is file UIKitDefines.h and it has all these definitions/constants.

#ifdef __cplusplus
#define UIKIT_EXTERN     extern "C" __attribute__((visibility ("default")))
#else
#define UIKIT_EXTERN            extern __attribute__((visibility ("default")))
#endif

#define UIKIT_STATIC_INLINE static inline
#define UIKIT_EXTERN_CLASS __attribute__((visibility("default")))
+3  A: 

Take a look at this page from Apple's developer documentation. In essence, it appears those macros allow you to control the visibility of certain symbols to the rest of your application.

Matt Ball
Aha, the very last sentence sums it up: "if a given class is intended to be usable outside the library or executable it's defined in, you need to ensure proper symbol visibility." [that's for 64bit OS X and iPhone OS]
Pumbaa80