M1芯片的Mac上iPhone虚拟机滚动过快的问题
iOS simulator scrolling on Apple S… | Apple Developer Forumshttps://developer.apple.com/forums/thread/668488Xcode 13.1带的iPhone虚拟机在M1芯片的Mac上滚动有问题,滚动过快,而且停不下来。Xcode 13.2.1 带的虚拟机在M1上滚动就没有问题了。如果不升级Xcode,可
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的方式运行了,就没有上面的问题了。

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)