当前位置: 首页 > 面试题库 >

如何从Swift确定设备类型?(OS X或iOS)

谢胤
2023-03-14
问题内容

我知道Swift相对较新,但是我想知道是否有一种确定设备类型的方法?

(就像您以前能够使用#define)?

我主要想知道如何区分OS X或iOS。我对此事一无所获。


问题答案:

如果要同时针对iOS和macOS(以及也可能对watchOS和tvOS)进行构建,则至少要编译两次:每个平台一次。如果要在每个平台上执行不同的代码,则需要构建时有条件的检查,而不是运行时检查。

Swift没有预处理器,但它确实有条件的构建指令-在大多数情况下,它们看起来像C等效项。

#if os(iOS) || os(watchOS) || os(tvOS)
    let color = UIColor.red
#elseif os(macOS)
    let color = NSColor.red
#else
    println("OMG, it's that mythical new Apple product!!!")
#endif

您还可以使用构建配置来测试架构(x86_64armarm64i386),目标环境(的iOS模拟器或Mac催化剂),或-D编译器标志(包括DEBUG通过标准的Xcode模板中定义的标志)。别以为这些事情会合而为一-
苹果公司宣布在arm64上推出macOS,预计在2020年上市,因此arm64并不意味着iOS,而iOS Simulator并不意味着x86,等等。

请参见 The Swift Programming Language Compiler
Control语句

__

(如果您想区分运行时使用的是哪种iOS设备,请UIDevice像从ObjC一样使用类。通常,查看对您而言重要的设备属性(而不是设备名称)更为有用和安全。或成语-
例如,使用特征和大小类来布置您的UI,检查Metal是否需要您的GPU功能,等等。



 类似资料:
  • 问题内容: 有没有办法在Swift中获取设备型号名称(iPhone 4S,iPhone 5,iPhone 5S等)? 我知道有一个名为的属性,但它仅返回设备类型(iPod touch,iPhone,iPad,iPhone Simulator等)。 我也知道使用此方法可以轻松在Objective-C中完成: 但是我正在用Swift开发我的iPhone应用程序,所以有人可以帮我用等效的方法来解决这个问

  • 问题内容: 在Swift中是否有确定变量类型的函数?我想可能会有类似Python的东西。 我想一种判断变量是Swift中的Foundation对象还是C变量的方法。就像NSString vs String,或NSArray vs array。这样我就可以在控制台中注销并清楚地看到它是什么。 例如,我想知道下面第一个推断的类型: 在这个问题中,我已经看到判断 给定 变量是否是 给定 类型的答案,但我

  • 1.1.1. 设备类型 1.1.1. 设备类型 见 V2 协议设备类型

  • 我有一个通过蓝牙连接的配对设备列表。但是我想把它们归类为iPhone或Android。这怎么可能呢?

  • 问题内容: 我正在创建一个通用类,并且需要使用一种方法来了解当前使用的通用类型的Class。原因是我调用的方法之一期望将此作为参数。 例: 显然,上面的示例不起作用,并导致以下错误:类型参数T的非法类文字。 我的问题是:有人知道这方面有很好的选择或解决方法吗? 问题答案: 仍然存在相同的问题:常规信息在运行时被删除,无法恢复。一种解决方法是在静态方法的参数中传递T类: 很难看,但是可以用。

  • 问题内容: 有没有一种方法可以快速打印变量的运行时类型?例如: 在上面的示例中,我正在寻找一种方法来表明变量“ soon”的类型为,或至少为。 问题答案: 2016年9月更新 Swift 3.0:使用,例如(因为关键字已删除) 2015年10月更新 : 我将下面的示例更新为新的Swift 2.0语法(例如,已被替换为,现在是)。 从Xcode 6.3发行说明 : @nschum在注释中指出Xcod