Xcode 10上的模拟器变得非常缓慢。

18
在 Xcode 9 上一切都运行得很完美。但是更新到 Xcode 10 后,模拟器开始出现巨大的延迟。即使是非常简单的动画也只有2帧每秒,并且整个 Mac OS 在模拟器上运行动画时也变得非常缓慢。有人知道发生了什么以及如何解决吗?任何应用程序或任何标准 iOS 应用程序都是同样的缓慢。
说明-这不是我可以使用 Command⌘ + T 切换的慢动作问题。我说的是巨大的延迟。当 UIView 飞行时,它会突然出现在另一个位置。不是平滑的慢动画。2 FPS 不是慢动作。它是相同的快速动作,但是只有 2 帧每秒!

尝试使用iOS 9.1模拟器,对我来说至少显示10fps,而iOS 10和12仅有2-3fps。 - Vlkam
7个回答

4

下载iOS11.4模拟器并尝试。缺点是您无法测试iOS12。但至少您可以使用Xcode 10并发布应用程序。 注意:不要费心获取Xcode 9.4.1或其他版本。它们都不能解决问题。 诀窍是在第一次运行Xcode 10后,它会将新的coresimulator框架安装到您的根文件夹中。


1
嘿,保罗。谢谢你的建议。但不幸的是,11.4模拟器现在和12.0模拟器一样有问题。我认为问题可能出在新的Xcode上((( - bodich
我刚试了一下,你是对的,问题一样。有些开发者说他们通过使用Time Machine回滚~/Library/Developer/PrivateFrameworks/CoreSimulator.framework解决了这个问题。我没有这个选项,因为我没有备份我的机器。下一步将是重新安装MacBook。 - Paul
1
你是否正在运行macOS Mojave(版本10.14测试版)? 我也遇到了同样的问题,这让我的工作效率大打折扣。我还没有找到任何解决方法,但我正在搜索不同的论坛,并且如果我找到一个有效的解决方案,我会发布它 @Paul - user6410342
我没有下载11.4模拟器 - 它在XCode 10之前就已经安装了,但是切换到这个模拟器绝对让我感到轻松 - 比12.0模拟器快十倍以上。 MacOS 10.14(发布版),XCode 10.0。 - Nick Entin
嗨,Nick,你能详细说明一下你做了什么吗?你只是从Xcode 9.4.1升级到Xcode 10,然后仍然可以选择11.4模拟器来运行吗?谢谢。 - Paul
显示剩余6条评论

3

对我来说有效的方法是在模拟器菜单的调试 > 图形质量覆盖中交换值。令人惊讶的是,将其从“设备默认”设置为“低”,延迟问题就解决了,现在任何值都能正常使用。


2

我曾经遇到过同样的问题,这是解决方法:

defaults write com.apple.CoreSimulator.IndigoFramebufferServices FramebufferRendererHint X  

X代表:

0 = 自动

1 = Metal

2 = OpenCL

3 = OpenGL


我也尝试过使用一些我找到的单行代码,但是很难找到解决我的问题的X值。我在这里提供列表,让人们选择正确的值来解释该值的含义。 - hbdev
X = 3有所帮助,iOS模拟器12。 - Aleksey Mazurenko
你把 defaults write ... 这行代码放在哪里? - Dale
1
@Dale 在终端应用程序中 - hbdev

1
升级到XCode10后,我遇到了与此处描述的完全相同的问题。每次打开模拟器时,无论是IphoneX还是Iphone SE,我的Mac都几乎停滞不前,而模拟器的性能只有几个FPS。
以下方法均未奏效: - FramebufferRendererHint设置 - 重置模拟器 - 重新安装Xcode - 创建新用户 - 删除Xcode 10并安装XCode9 - 删除CoreSimulator.framework并安装新的模拟器
最终奏效的方法是: - 使用Time Machine还原CoreSimulator.framework和Xcode.app(我的最后一个备份是2017年9月),所以现在我正在运行Xcode9.1,但至少它又可以正常工作了!
不确定是否相关,但我正在使用一台旧的iMac mid 2011。

0

是的,它并不是你所说的慢动作问题。Xcode模拟器在总体性能上非常低。这是Apple的一个漏洞。我已经通过反馈助手报告了它。 我已经用代码创建了演示,证明模拟器比任何旧真实设备慢200倍。 我发现使用Date对象执行的JavaScript代码对模拟器来说很痛苦,可以在jsfiddle中查看https://jsfiddle.net/kjms16cw/。我希望苹果会尽快修复它!

var log = document.getElementById("log");
document.getElementById("button").onclick = function() { run(); };

function run() {
 var d1 = new Date();
 for (var i = 0; i < 1000; i++) {
  var x = new Date();
  x.setMilliseconds(0);
  x.setSeconds(0);
  x.setMinutes(0);
 }
 var d2 = new Date();
 log.innerHTML = ((d2.getTime() - d1.getTime()) / 1000) + " seconds";
}
<h3>Xcode Simulator Extremely Low Performance</h3>
<p>This test runs fast (several tens milliseconds e.g. 30 ms)
in any browser any device any platform including very old iOS device
e.g. iPhone 5C and several years old iPad 2, BUT IN SIMULATOR IT TAKES 6000 ms 
(yes, 6 seconds!). Terrible!</p>
<button id="button">run()</button>
<div id="log"></div>


0

当我从横屏切换到竖屏时,我遇到了一些问题。视图就是不会移动。

我找到的唯一解决方法是使用 Command + 箭头向上。这模拟了音量增加的按键操作,并在旋转后刷新了显示。


-5
请确保未意外启用“减速动画”(调试>减速动画)。我已经犯了很多次这个错误:(


1
他已经解释过了,这与那个没有任何关系。 - matt
1
非常正确。虽然我不知道它是如何被打开的,但这解决了我的问题。可能是在最近的xCode中设置为默认值。 - Aproram

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接