Xcode iPhone8模拟器的意义是什么?

Xcode iPhone8模拟器的意义是什么?,xcode,ios-simulator,iphone-8,Xcode,Ios Simulator,Iphone 8,说到模拟器的功能,除了设备id之外,iPhone7和iPhone8模拟器还有什么不同?为什么苹果在Xcode中同时包含了这两个问题?对于这里的任何“为什么苹果…”问题,你都不可能得到权威的答案——苹果作为一个企业实体不会发布这样的信息 iphone6、6s和7之间,以及两代ipadpro12.9之间,都没有显著的模拟器功能差异“硬件,也不是各种iPhone Plus型号之间的模拟器,等等。在过去几年的主要Xcode版本中,它们只是包括/允许您为每个受支持的设备创建特定于设备的模拟器,而不管这些设

说到模拟器的功能,除了设备id之外,iPhone7和iPhone8模拟器还有什么不同?为什么苹果在Xcode中同时包含了这两个问题?

对于这里的任何“为什么苹果…”问题,你都不可能得到权威的答案——苹果作为一个企业实体不会发布这样的信息

iphone6、6s和7之间,以及两代ipadpro12.9之间,都没有显著的模拟器功能差异“硬件,也不是各种iPhone Plus型号之间的模拟器,等等。在过去几年的主要Xcode版本中,它们只是包括/允许您为每个受支持的设备创建特定于设备的模拟器,而不管这些设备在模拟器实现的级别上是否存在任何有意义的差异。(当然,有许多硬件差异超出了模拟器的范围,比如金属功能集或相机功能。)

在他们开始使用特定于设备的模拟器配置文件之前(大约在Xcode 6,IIRC?),模拟器提供了一组较小的配置文件,映射到屏幕几何结构的显著差异,例如iPhone 3.5、iPhone 3.5“视网膜、iPhone 4”视网膜、iPhone 4.7“视网膜、iPad、iPad视网膜等

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

另一个问题是,有些设备差异与屏幕差异不一致,比如64位支持(并不是说在模拟器中以x86_64二进制文件的形式运行64位应用程序与在设备上运行arm64二进制文件非常相似,但这是第一个近似值)、触摸ID(模拟器为其提供代理)等等(正如@russbishop的回答所指出的那样)模拟器还确保像
uname
这样的API返回真实的值(像
iPhone10,1
对于iPhone8)而不是虚构的模拟设备


如果您希望将Xcode中可用的模拟器目标集减少到仅提供显著屏幕几何差异的目标集,请随意访问设备和模拟器窗口并删除/重命名到您的核心内容。对于iOS 11,您可以减少到仅iPhone 5s/SE/iPod Touch第六代、iPhone 6/6s/7/8、iPhone Plus、iPhone X,三种尺寸的iPad屏幕,让你有八个不同的运行目的地,而不是默认的十七个。

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