NS_ENUM & NS_OPTIONS:针对 iOS 6 或 OS X ML 的先前版本
NS_ENUM & NS_OPTIONS: targeting a previous version of iOS 6 or OS X ML
我正在阅读 NS_ENUM & NS_OPTIONS。作者说:
If you'd like to use either macro when targeting a previous version of
iOS or OS X, you can simply inline like so:
#ifndef NS_ENUM
#define NS_ENUM(_type, _name) enum _name : _type _name; enum _name : _type
#endif
有什么理由不能在 OS 低于 iOS 6 (< iOS 6) 上使用这两个宏?它们只是宏,与 iOS 版本无关,但与编译器(预处理器)功能相关。我在文档中找不到任何内容。
有什么提示吗?
我同意文章中的措辞有点令人困惑,因为听起来此功能依赖于运行时。但是你是对的,它不依赖于 iOS 版本;这只是一个语言功能。
我认为这篇文章真正想说的是,如果您使用旧版本的 iOS SDK(例如 Xcode 4.4)编译您的项目,那么这些宏将不会不存在,您需要手动定义它们才能使用它们。但是,如果您使用的是最新的 Xcode,其中已经为您定义了宏,那么即使您的目标是 iOS.
的旧版本,您也可以使用这些宏。
我正在阅读 NS_ENUM & NS_OPTIONS。作者说:
If you'd like to use either macro when targeting a previous version of iOS or OS X, you can simply inline like so:
#ifndef NS_ENUM #define NS_ENUM(_type, _name) enum _name : _type _name; enum _name : _type #endif
有什么理由不能在 OS 低于 iOS 6 (< iOS 6) 上使用这两个宏?它们只是宏,与 iOS 版本无关,但与编译器(预处理器)功能相关。我在文档中找不到任何内容。
有什么提示吗?
我同意文章中的措辞有点令人困惑,因为听起来此功能依赖于运行时。但是你是对的,它不依赖于 iOS 版本;这只是一个语言功能。
我认为这篇文章真正想说的是,如果您使用旧版本的 iOS SDK(例如 Xcode 4.4)编译您的项目,那么这些宏将不会不存在,您需要手动定义它们才能使用它们。但是,如果您使用的是最新的 Xcode,其中已经为您定义了宏,那么即使您的目标是 iOS.
的旧版本,您也可以使用这些宏。