iPhone 8模拟器有什么意义?

What is the point of the iPhone 8 simulator?

当谈到模拟器功能时,iPhone 7 和 iPhone 8 模拟器除了设备 ID 之外还有什么不同?为什么 Apple 将两者都包含在 Xcode 中?

您不太可能在此处获得任何 "why did Apple..." 问题的权威答案 — Apple 作为一个公司实体不会 post 如此。

iPhone 6、6s 和 7,两代 iPad Pro 12.9" 硬件之间,以及各种 iPhone 加上模型等。在过去几年的主要 Xcode 版本中,它们刚刚包含/让您为每个支持的设备创建特定于设备的模拟器,无论这些设备之间是否存在任何有意义的差异级别模拟器实现。(当然还有很多硬件差异不在模拟器的范围内,比如金属功能集或相机功能。)

早在他们开始拥有特定于设备的模拟器配置文件之前(大约在 Xcode 6,IIRC 的时间?),模拟器提供了一组较小的配置文件映射到屏幕几何形状的显着差异 - 例如iPhone 3.5"、iPhone 3.5" 视网膜、iPhone 4" 视网膜、iPhone 4.7" 视网膜、iPad、iPad 视网膜等。

其中一个问题,也是 Apple 改变路线的一个可能原因,是 Apple 设备的种类和历史不断增加,这使得跟踪您的想法变得更加困难。 (好吧,我现在想看看我的应用程序在 iPhone 5s 上是如何工作的。那是什么屏幕尺寸?)另一个可能是 UI 尺寸自 2014 年以来就没有直接与设备尺寸相关联,其中iPhone 6 和 6 Plus(及其后续产品)提供了缩放 UI 模式(IIRC 也在模拟器中)。

另一个问题是设备差异不会映射到屏幕差异,例如 64 位支持(不是 运行将 64 位应用程序作为 x86_64 二进制文件模拟器很像 运行 在设备上安装 arm64 二进制文件,但它是第一个近似值)、Touch ID(模拟器为其提供代理)等。并且(如@russbishop 的回答说明)模拟器还使确保 API 像 uname return 现实值(如 iPhone10,1 代表 iPhone 8)而不是虚构的模拟设备。

如果您希望将 Xcode 中的可用模拟器目标集缩减为仅那些提供显着屏幕几何形状差异的目标,请随时访问设备和模拟器 window 和 delete/rename随心所欲。对于 iOS 11,您可以减少到 iPhone 5s/SE/iPod Touch 6th gen,iPhone 6/6s/7/8,iPhone 另外,iPhone X 和三种尺寸的 iPad 屏幕,为您提供八个不同的 运行 目的地,而不是默认的十七个。

答案是因为模拟器正在尝试尽可能准确。这包括从返回正确的模型标识符到框架行为的差异。有时会有仅在相关模拟器上可用的新硬件功能(例如 Touch ID、Face ID)。