系统标头TargetConditionals.h定义了几个宏,您可以从C和Objective-C中使用这些宏来确定所使用的平台。
#import <TargetConditionals.h> // 使用Foundation自动导入 - (void)doSomethingPlatformSpecific { #if TARGET_OS_IOS // 为iPhone / iPhone模拟器编译的代码 #elif TARGET_OS_MAC && !TARGET_OS_IPHONE // 仅针对OS X编译的代码 #else // 为其他平台编译的代码 #endif }
宏的值为:
使用iOS 9.1,tvOS 9.0,watchOS 2.0,OS X 10.11或更高版本的SDK时:
巨集 | 苹果电脑 | 的iOS | iOS模拟器 | 看 | 手表模拟器 | 电视 | 电视模拟器 |
---|---|---|---|---|---|---|---|
TARGET_OS_MAC | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
TARGET_OS_IPHONE | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
TARGET_OS_IOS | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
TARGET_OS_WATCH | 0 | 0 | 0 | 1 | 1 | 0 | 0 |
TARGET_OS_TV | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
TARGET_OS_SIMULATOR | 0 | 0 | 1 | 0 | 1 | 0 | 1 |
TARGET_OS_EMBEDDED | 0 | 1 | 0 | 1 | 0 | 1 | 0 |
TARGET_IPHONE_SIMULATOR | 0 | 0 | 1 | 0 | 1 | 0 | 1 |
使用iOS 8.4,OS X 10.10或更旧的SDK时:
巨集 | 苹果电脑 | 的iOS | iOS模拟器 |
---|---|---|---|
TARGET_OS_MAC | 1 | 1 | 1 |
TARGET_OS_IPHONE | 0 | 1 | 1 |
TARGET_OS_EMBEDDED | 0 | 1 | 0 |
TARGET_IPHONE_SIMULATOR | 0 | 0 | 1 |