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