iOS 定义常量

作者: Vergil_wj | 来源:发表于2020-03-28 00:25 被阅读0次

常量定义的方式:

  • #define

  • extern const

  • static const

  • FOUNDATION_EXPORT

使用场景

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

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

static NSString *const cellIdentifier = @"cellIdentifier";

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

  • static 则作用域为当前 .m 文件;
  • 不加 static 则作用域为整个项目,其它文件如果需要使用则可以使用全局变量 extern 或者 FOUNDATION_EXPORT 声明一下就可以使用了。

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

相关文章

网友评论

    本文标题:iOS 定义常量

    本文链接:https://www.haomeiwen.com/subject/owpduhtx.html