Xcode14时的解决方案:
https://stackoverflow.com/questions/73700696/open-simulator-xcode-14-by-rosetta-to-fix-scroll
arch -x86_64 /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/Contents/MacOS/Simulator
就是先用命令行把虚拟机按x86的方式启动起来后,再在Xcode中调试代码。但是不知道为啥不行。
Xcode 13.1和13.2.1带的iPhone虚拟机在M1芯片的Mac上滚动有问题,滚动过快,而且停不下来。
可用下面的方法解决:
就是进入Xcode的Contents目录,找到Simulator,在文件的简介中选中rosetta。
I temporally solve the issue by forcing simulator run in rosetta. open application folder, show package content, go to Contents/Developer/Applications/Simulator, then you can check the rosetta checkbox
原因参考下面:
M1 设备的 Xcode 编译问题深究_arm_运行_模拟器
大体上说就是:
在mac上模拟器是mac os的一个进程。 而模拟器中的app也是mac os上的一个进程,并不是跑在虚拟机上的。如果不设模拟器为rosetta,则模拟器的进程是 Apple 类型的,而app的进程则是以 x86 的方式运行的(xCode 13新建的工程是Apple的,不知道怎么设的)。
这种情况下,模拟器和app的进程的类型不一样,会通过 XPC 进行通信,虽然理论上不会有问题,但通信时间会比较长,导致一些依赖计时器判断的逻辑会出问题,例如滑动手势,加速度的判断会出一些问题,导致模拟器里大部分情况下列表无法触发惯性滚动。
而将模拟器设为rosetta后,模拟器的进程就也以 x86-64的方式运行了,就没有上面的问题了。