iOS-extern、UIKIT_EXTERN、FOUNDATI
2021-06-28 本文已影响0人
Imkata
1. extern
extern就是我们在.m中定义一个常量,然后在.h中通过extern引出到外部。
2. UIKIT_EXTERN
//UIKitDefines.h
#ifdef __cplusplus
#define UIKIT_EXTERN extern "C" __attribute__((visibility ("default")))
#else
#define UIKIT_EXTERN extern __attribute__((visibility ("default")))
#endif
代码解释参考:https://www.cnblogs.com/hissia/p/5643151.html
UIKIT_EXTERN简单来说:就是将函数修饰为兼容以往C编译方式的、具有extern属性(文件外可见性)、public修饰的方法或变量库外仍可见的属性。
3. FOUNDATION_EXPORT
//NSObjCRuntime.h
#if defined(__cplusplus)
#define FOUNDATION_EXTERN extern "C"
#else
#define FOUNDATION_EXTERN extern
#endif
#define FOUNDATION_EXPORT FOUNDATION_EXTERN
#define FOUNDATION_IMPORT FOUNDATION_EXTERN
可以发现,FOUNDATION_EXPORT和FOUNDATION_IMPORT都是FOUNDATION_EXTERN,并且FOUNDATION_EXTERN的定义只是将函数修饰为兼容以往C编译方式的、具有extern属性(文件外可见性)的属性。
总结:平常iOS开发中,不管是NSString还是CGFloat等等,想用哪个用哪个,参考一些三方库的使用频率,FOUNDATION_EXPORT > UIKIT_EXTERN > extern。