Xcode 8 GM の時点で、これはiOS 10.0のTargetConditionals.hの関連セクションです。
#define TARGET_OS_MAC 1
#define TARGET_OS_WIN32 0
#define TARGET_OS_UNIX 0
#define TARGET_OS_OSX 0
#define TARGET_OS_IPHONE 1
#define TARGET_OS_IOS 1
#define TARGET_OS_WATCH 0
#define TARGET_OS_BRIDGE 0
#define TARGET_OS_TV 0
#define TARGET_OS_SIMULATOR 0
#define TARGET_OS_EMBEDDED 1
#define TARGET_IPHONE_SIMULATOR TARGET_OS_SIMULATOR /* deprecated */
#define TARGET_OS_NANO TARGET_OS_WATCH /* deprecated */
(Xcode のテキスト エディターの上の「ブレッドクラム」iOS 10.0 > usr/include > TargetConditionals.h
)
...そして、これは macOS 用の同じファイルです。
#define TARGET_OS_MAC 1
#define TARGET_OS_WIN32 0
#define TARGET_OS_UNIX 0
#define TARGET_OS_OSX 1
#define TARGET_OS_IPHONE 0
#define TARGET_OS_IOS 0
#define TARGET_OS_WATCH 0
#define TARGET_OS_BRIDGE 0
#define TARGET_OS_TV 0
#define TARGET_OS_SIMULATOR 0
#define TARGET_OS_EMBEDDED 0
#define TARGET_IPHONE_SIMULATOR TARGET_OS_SIMULATOR /* deprecated */
#define TARGET_OS_NANO TARGET_OS_WATCH /* deprecated */
(Xcode のテキスト エディターの上の「ブレッドクラム」macOS 10.12 > usr/include > TargetConditionals.h
)
TARGET_OS_MAC
は両方のプラットフォームで1として定義されていますが、 macOS でのみ1TARGET_OS_OSX
です。
ファイルのコメントでは、次のように説明されています。
- TARGET_OS_MAC: 生成されたコードは、Mac OS X バリアントで実行されます。
- TARGET_OS_OSX: 生成されたコードは OS X デバイスで実行されます。
当時のある時点で (おそらく iPhone が発表された頃でしょうか?)、誰かが iOS (旧称「iPhone OS」) が「Mac OS X バリアント」の定義に適合すると判断したと思います。