我正在查看 Apple 的Lister(用于 Apple Watch、iOS 和 OS X)示例。该示例针对 iOS 和 OS X 执行测试:
#import <TargetConditionals.h>
#if (TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR)
@import ListerKit;
#elif TARGET_OS_MAC
@import ListerKitOSX;
#endif
但是,没有测试TARGET_OS_WATCH
或类似的测试。Grepping for watch
inTargetConditionals.h
没有命中:
$ cat /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer
/SDKs/iPhoneOS7.1.sdk/usr/include/TargetConditionals.h | grep -i watch
$
从TargetConditionals.h
,我知道有:
这些条件指定生成的代码将在哪个操作系统中 跑。MAC/WIN32/UNIX 条件是互斥的。嵌入式/iPhone 条件是 TARGET_OS_MAC 的变体。 TARGET_OS_MAC - 生成代码将在 Mac OS 下运行 TARGET_OS_WIN32 - 生成代码将在 32 位 Windows 下运行 TARGET_OS_UNIX - 生成代码将在某些非 Mac OS X unix 下运行 TARGET_OS_EMBEDDED - 生成代码将在嵌入式操作系统变体下运行 TARGET_OS_MAC TARGET_OS_IPHONE - 生成代码将在 iPhone OS 下运行 是 TARGET_OS_MAC 的变体。 TARGET_IPHONE_SIMULATOR - 生成在 iPhone 模拟器下运行的代码
问:苹果手表有预处理器吗?
我用ios进行标记,但我不确定这是否是这个问题的正确操作系统。
下面的列表是从 iPhone 的TargetConditionals.h
. Simulator 和 OS X 类似(它们只是将不同的位设置为 1):
#define TARGET_OS_MAC 1
#define TARGET_OS_WIN32 0
#define TARGET_OS_UNIX 0
#define TARGET_OS_EMBEDDED 1
#define TARGET_OS_IPHONE 1
#define TARGET_IPHONE_SIMULATOR 0
问题:手表用TARGET_OS_EMBEDDED
吗?手表省略了 TARGET_OS_IPHONE
吗?