ios开发iOS技术合集

iOS 定义常量

2020-03-28  本文已影响0人  Vergil_wj

常量定义的方式:

使用场景

根据常量的作用域选择性使用:

1、如果常量只在某个类的内部使用,则应该在 .m 文件顶部声明为 static const:

static NSString *const cellIdentifier = @"cellIdentifier";

其中加 static 与不加 static 的区别:

2、如果常量被其它类使用则应该在 .h 中使用 extern 或者 FOUNDATION_EXPORT 声明,并在 .m 中定义:

//.h
extern NSString *const cellIdentifier;
//或者
FOUNDATION_EXPORT NSString *const cellIdentifier;

//.m
NSString *const cellIdentifier = @"cellIdentifier";

3、#define 在以上场景都可使用,请节制使用,因为#define在预编译阶段进行替换处理,如果大量使用则每次修改会导致编译时间很长;且#define不做编译检查,可能导致重复定义,const则会进行编译检查,更加安全。

FOUNDATION_EXPORT

看下其定义在 NSObjCRuntime.h 文件:

#if defined(__cplusplus)    //C++编译器内部定义的宏
#define FOUNDATION_EXTERN extern "C"
#else   //C编译器
#define FOUNDATION_EXTERN extern
#endif

#define FOUNDATION_EXPORT FOUNDATION_EXTERN

很显然,FOUNDATION_EXPORT 相比 extern 有更大兼容性,兼容 CC++ 格式,推荐使用FOUNDATION_EXPORT

上一篇下一篇

猜你喜欢

热点阅读