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

XCode 9.3中运行单元测试时RxSwift崩溃问题求助

解决XCode 9.3中RxSwift单元测试崩溃问题:Undefined symbols for architecture arm64

嘿,我维护老项目时碰到过一模一样的问题,咱们一步步来搞定它!

这个报错Undefined symbols for architecture arm64: "(extension in RxCocoa):RxSwift.ObservableType.bind(to: RxSwift.Variable) -> RxSwift.Disposable"的核心原因很明确:编译器找不到RxCocoa里给ObservableType添加的绑定到Variable的扩展方法,大概率是依赖版本不匹配或者引入不到位导致的。

下面是几个亲测有效的解决方案:

  • 确保RxSwift和RxCocoa版本完全一致
    这是最容易踩的坑!如果主项目和单元测试目标的RxSwift、RxCocoa版本不统一,就会出现符号找不到的问题。用CocoaPods的话,一定要在Podfile里锁定相同版本:

    pod 'RxSwift', '4.0.0' # XCode 9.3对RxSwift 4.x版本兼容性最好
    pod 'RxCocoa', '4.0.0'
    pod 'RxTest', '4.0.0'
    pod 'RxBlocking', '4.0.0'
    

    写完后执行pod install或pod update,确保所有目标(主项目+单元测试)都安装了相同版本的依赖。

  • 检查单元测试目标是否正确引入RxCocoa
    很多人会忽略给单元测试target加RxCocoa依赖。用CocoaPods的话,要在Podfile里明确把RxCocoa加到测试目标中:

    target 'YourAppTests' do
      inherit! :search_paths
      pod 'RxCocoa'
      pod 'RxSwift'
      pod 'RxTest'
    end
    

    手动管理框架的话,要在单元测试target的Build Phases -> Link Binary With Libraries里添加RxCocoa.framework。

  • 确认代码里导入了必要的框架
    别忘了在测试文件顶部导入RxSwift和RxCocoa,少了RxCocoa的话,那个绑定扩展根本找不到:

    import RxSwift
    import RxCocoa
    
  • 清理XCode缓存,重新构建
    XCode的缓存偶尔会抽风,试试这几步:

    1. 按下Cmd + Shift + K清理项目
    2. 打开XCode偏好设置(Cmd + ,),进入Locations标签,找到Derived Data路径并删除整个文件夹
    3. 重启XCode,重新构建项目和单元测试

如果以上方法都没用,那可能是XCode 9.3本身的兼容性问题——RxSwift 5.x及以上版本不再支持XCode 9,所以一定要锁定RxSwift到4.x版本。要是项目允许,升级XCode到9.4.1也能解决不少兼容性问题。

内容的提问来源于stack exchange,提问作者NB Fouda

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:13:18