iPhone 6,6s和7之间没有真正值得注意的模拟器功能,也没有两代iPad Pro 12.9“硬件之间,以及各种iPhone Plus模型之间的功能,等等.在过去几年的主要Xcode版本中,他们只是包含/让你为每个支持的设备创建特定于设备的模拟器,无论模拟器实现的那些设备之间是否有任何有意义的差异.(当然有很多硬件差异超出了模拟器的范围,像金属功能集或相机功能.)
在他们开始使用特定设备的模拟器配置文件之前(大约在Xcode 6,IIRC?的时间),模拟器提供了一组较小的配置文件,映射到屏幕几何的显着差异 – 例如iPhone 3.5“,iPhone 3.5”视网膜,iPhone 4“视网膜,iPhone 4.7”视网膜,iPad,iPad视网膜等
问题的一个问题,以及Apple改变方向的可能原因是,Apple设备的种类和历史越来越多,因此很难跟踪你头脑中的内容. (好的,我想看看我的应用程序现在如何在iPhone 5s上运行.那个屏幕尺寸是多少?)另一个可能是自2014年以来,UI尺寸与设备尺寸没有直接关系,其中iPhone 6和6 Plus(以及它们的接班人提供了一种缩放的UI模式(IIRC也在模拟器中).
另一个问题是设备差异没有映射到屏幕差异,例如64位支持(不是在模拟器中运行64位应用程序作为x86_64二进制文件就像在设备上运行arm64二进制文件一样,但它是第一个近似值,触摸ID(模拟器提供代理),等等.(如@ russbishop的答案说明),模拟器还确保像uname这样的API返回真实值(如iPhone 8的iPhone10,1)而不是一个虚构的模拟设备.
如果您宁愿将Xcode中可用的模拟器目标集减少到仅提供显着屏幕几何差异的目标,请随时访问“设备和模拟器”窗口并删除/重命名您的内容.对于iOS 11,你可以减少iPhone 5s / SE / iPod Touch第六代,iPhone 6 / 6s / 7/8,iPhone Plus,iPhone X和三种尺寸的iPad屏幕,让你获得八个不同的运行目的地,而不是默认十七.