定义常量的方法
- 采用宏定义
#define kConstantString @"kConstantString"
- 使用FOUNDATION_EXPORT
.h
FOUNDATION_EXPORT NSString *kConstantString1;
.m
NSString *kConstantString1 = @"kConstantString1";
- 使用extern
.h
extern NSString *const kConstantString2;
.m
NSString *const kConstantString2 = @"kConstantString2";
他们的区别呢?
可以参考这里的回答,用FOUNDATION_EXPORT可以编译成C中的extern,C++的extern "C",为了更好的和其他语言共存,所以说FOUNDATION_EXPORT比extern好。
那么FOUNDATION_EXPORT和#define比较呢
推荐使用FOUNDATION_EXPORT这种带类型的常量定义
比如说
static const CGFloat kPadding = 0.2;
#define kPadding = 0.2;
第一种带类型的常量可以显性的告知程序员该常量的类型,方便开发阅读
总结
多使用FOUNDATION_EXPORT而不是extern和#define
网友评论