UIKIT_EXTERN_CLASS и UIKIT_EXTERN, для чего эти 2 константы?

Когда я перехожу к определению классов в документации, я всегда вижу эти две вещи (UIKIT_EXTERN_CLASS и UIKIT_EXTERN) перед @interface, что означают эти константы и почему Apple помещает их перед их классами?

И еще одно, есть файл UIKitDefines.h, и он имеет все эти определения/константы.

#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")))

Ответ 1

Взгляните на эту страницу из документации разработчика Apple. По сути, похоже, что эти макросы позволяют вам контролировать видимость определенных символов для остальной части вашего приложения.