我知道Swift是比较新的,但是我想知道是否有办法确定设备类型?
(像你以前能够使用#define)?
主要是想知道如何区分OS X或iOS。我没有发现这个问题。
如果您正在为iOS和OS X(也可能现在用于watchOS和tvOS)构建,那么您至少建立两次代码:每个平台一次。如果您希望在每个平台上执行不同的代码,则需要构建时间条件,而不是运行时检查。
Swift没有预处理器,但它具有条件构建伪指令 – 并且在大多数情况下,它们看起来像C等效。
#if os(iOS) || os(watchOS) || os(tvOS) let color = UIColor.redColor() #elseif os(OSX) let color = NSColor.redColor() #else println("OMG,it's that mythical new Apple product!!!") #endif
您还可以使用构建配置来测试架构(x86_64,arm,arm64,i386)或-D编译器标志(包括由标准Xcode模板定义的DEBUG标志)。
请参阅使用Swift与Cocoa和Objective-C中的Preprocessor Directives。
(如果要在运行时区分哪种iOS设备,请使用UIDevice类,就像您在ObjC中一样。查看对您而不是设备重要的设备属性通常更有用和安全名称或成语 – 例如使用特征和大小类来布局您的UI,查询OpenGL以获取所需的GPU功能等)