如何在Objective-C中前置声明NS_OPTIONS?
如何在Objective-C中前置声明NS_OPTIONS?
在Objective-C里前置声明NS_OPTIONS其实和处理NS_ENUM的思路差不多,操作起来很简单,我给你梳理清楚:
前置声明的语法
NS_OPTIONS本质是Apple专为位掩码枚举设计的宏,底层基于整数类型,所以它的前置声明语法和NS_ENUM完全一致。你只需要声明类型的别名和对应的整数基底类型,不需要写出具体的枚举值:
// 前置声明MSSOption这个NS_OPTIONS类型 typedef NS_OPTIONS(NSInteger, MSSOption);
后续的完整定义
在需要具体使用枚举值的文件里,你再补上完整的枚举定义即可:
// 完整定义MSSOption的枚举值 typedef NS_OPTIONS(NSInteger, MSSOption) { MSSOptionNone = 0, MSSOptionName = 1 << 0, MSSOptionEmail = 1 << 1, MSSOptionTelephone = 1 << 2 };
注意事项
- 如果你只是需要在某个头文件里把这个NS_OPTIONS类型作为参数、返回值或者成员变量的类型,前置声明就完全足够,不需要引入完整的定义,这样还能减少头文件依赖。
- 一定要保证前置声明和后续完整定义的基底类型(这里是NSInteger)一致,否则会出现编译错误。
内容的提问来源于stack exchange,提问作者foobar
相关产品推荐
相关产品推荐

