当我使用这个方法 class_getName()
时,我发现它是这样声明的:
**OBJC_EXPORT** const char *class_getName(Class cls)
OBJC_EXPORT
是什么意思?
最佳答案
如果您在该符号上按下 CMD+CLICK,您会发现它不是关键字。 OBJC_EXPORT
定义为:
#define OBJC_EXPORT OBJC_EXTERN OBJC_VISIBLE
和OBJC_EXTERN
是 extern "C"
或 extern
,具体取决于您是编译 C++ 还是 C。
和OBJC_VISIBLE
是 __declspec(dllexport)
或 __declspec(dllimport)
在 Windows 上,或 __attribute__((visibility("default"))
否则。
基本上是说您可以在外部链接该符号。
完整列表如下:
#if !defined(OBJC_EXTERN)
# if defined(__cplusplus)
# define OBJC_EXTERN extern "C"
# else
# define OBJC_EXTERN extern
# endif
#endif
#if !defined(OBJC_VISIBLE)
# if TARGET_OS_WIN32
# if defined(BUILDING_OBJC)
# define OBJC_VISIBLE __declspec(dllexport)
# else
# define OBJC_VISIBLE __declspec(dllimport)
# endif
# else
# define OBJC_VISIBLE __attribute__((visibility("default")))
# endif
#endif
#if !defined(OBJC_EXPORT)
# define OBJC_EXPORT OBJC_EXTERN OBJC_VISIBLE
#endif
关于ios - Objective-C 中的 OBJC_EXPORT 关键字是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40035885/