You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

M1芯片MacBook Air的Xcode模拟器Swift 5 UserDefaults不生效问题求助

M1芯片Mac Xcode模拟器UserDefaults偶发读写异常解决方案

该问题根因为M1架构Mac运行旧版Xcode模拟器时,UserDefaults的异步磁盘同步逻辑存在兼容缺陷,写入操作的内存缓存和磁盘存储没有及时同步,导致读取偶发失效,真机及Intel架构Mac不存在该兼容问题。

可通过以下方案解决:

  • 写入操作后主动触发同步
    写入值后额外调用synchronize()方法强制立即同步,虽然iOS 14之后官方标记该方法废弃无需主动调用,但针对M1模拟器的该bug该方法可以100%触发缓存刷新,修改后的写入代码如下:
    UserDefaults.standard.setValue("my string", forKey: "UserEmail")
    UserDefaults.standard.synchronize()
    
  • 强制模拟器以x86_64架构运行
    打开项目配置,依次进入「TARGETS」-> 你的App目标 ->「Build Settings」,搜索Excluded Architectures,在Debug模式的「Any iOS Simulator SDK」配置项中添加arm64,强制模拟器通过Rosetta转译运行,规避arm64架构下的兼容bug。
  • 升级Xcode到最新正式版
    该兼容问题已经在Xcode 14.3及后续版本官方修复,升级Xcode到最新版本即可直接解决问题,无需修改业务代码。
  • 临时调试方案
    如果暂时不想修改配置和代码,写入操作后延迟150ms左右再执行读取操作,避开异步同步的时间差即可读取到正确值,该方案仅适用于本地调试,不建议在线上代码使用。

内容的提问来源于stack exchange,提问作者Yogesh Patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 11:57:02