ios - Objective-C 中的 OBJC_EXPORT 关键字是什么意思?

标签 ios xcode

当我使用这个方法 class_getName() 时,我发现它是这样声明的:

**OBJC_EXPORT** const char *class_getName(Class cls)

OBJC_EXPORT 是什么意思?

最佳答案

如果您在该符号上按下 CMD+CLICK,您会发现它不是关键字。 OBJC_EXPORT定义为:

#define OBJC_EXPORT  OBJC_EXTERN OBJC_VISIBLE

OBJC_EXTERNextern "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/

相关文章:

ios - CKReference 的 CloudKit 订阅通知未按预期工作

iOS Swift - 设置开始时间和结束时间(仅限 future 时间)UIDatePicker

ios - 自动布局和比例定位

ios - 我能以某种方式获得 scrollViewDidScroll : UIScrollView Delegate method from UIPageViewController?

ios - Xcode 5 中的新 XIB 格式是否会失去应用程序向后兼容性?

iOS 设备 token 回调从未被调用

ios/xcode : Set visible width of button

ios - 如果执行长任务(网络调用),则在显示加载动画时禁用用户交互。不好的做法还是好的做法?

ios - Xcode:控制拖动仅适用于第一个 Storyboard View Controller

swift - 在目标 View Controller 中禁用文本字段