有多个(相同分辨率)iOS 模拟器有什么意义?

What's the point of have multiple (same resolution) iOS simulators?

我开发 iOS 应用程序已有一段时间了,我知道 iOS 模拟器 运行 的代码比它们的硬件对应物(即实际设备)更快。我在 Apple 的 Testing and Debugging in Simulator 文档站点上阅读了以下内容。

Because the simulator is an app running on a Mac, it has access to the computer’s resources, including the CPU, memory, and network connection. All of these resources are likely to be faster than those found on a mobile device. As a result, the simulator is not an accurate test of an app’s performance, memory usage, and networking speed.

我完全理解。我也明白有多个模拟器来测试不同的 size-classes/resolutions.

很重要

但是,我不明白的是,为什么 Apple 会为具有相同分辨率的设备提供如此多的模拟器。请参阅下图,显示 iPhone 6、6s 和 7 - 所有这些都具有相同的屏幕尺寸和分辨率。

鉴于模拟器 运行 在 'full speed'(不管它实际模拟的是什么设备),拥有所有这些模拟器(每个都占用几 GB 的存储空间)有什么意义?

提前致谢,

洛伊克

每种设备类型都会尝试模拟各自的物理设备,包括诸如强制触摸等功能。如果您的触控板支持力触摸,模拟器会将其转化为模拟设备上的力,但仅限于支持它的设备类型。还有诸如图形 class 和内存 class 之类的东西可以启用或禁用某些行为。 (理论上,与 iPad Pro 模拟器相比,Jetsam 应该更积极地驱逐 iPhone 5 模拟器上的后台应用程序。)

您可以使用 xcrun simctl 创建或删除设备,包括默认设备,但 Xcode 更新可能会重新创建默认设备。

如果您想要不同的照片库、权限设置(授予您的应用在一个中使用位置而在另一个中拒绝使用位置)等,您还可以为同一设备类型创建多个模拟器实例。