TargetConditionals
系統標頭檔案 TargetConditionals.h
定義了幾個巨集,你可以使用它們從 C 和 Objective-C 中確定你正在使用的平臺。
#import <TargetConditionals.h> // imported automatically with Foundation
- (void)doSomethingPlatformSpecific {
#if TARGET_OS_IOS
// code that is compiled for iPhone / iPhone Simulator
#elif TARGET_OS_MAC && !TARGET_OS_IPHONE
// code that is compiled for OS X only
#else
// code that is compiled for other platforms
#endif
}
巨集的值是:
Version >= 7
使用 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 |
Version < 7
使用 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 |