M1芯片的Mac上iPhone虚拟机滚动过快的问题

针对Xcode13.1及13.2.1版本在M1芯片Mac上出现的模拟器滚动过快且难以停止的问题,本文提供了解决方案。通过设置模拟器使用Rosetta运行,能够有效修复这一缺陷。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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中调试代码。但是不知道为啥不行。

 

iOS simulator scrolling on Apple S… | Apple Developer Forumshttps://developer.apple.com/forums/thread/668488

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的方式运行了,就没有上面的问题了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值