使用 RxCocoa 时 XCode 在部署到模拟器时崩溃

Posted

技术标签:

【中文标题】使用 RxCocoa 时 XCode 在部署到模拟器时崩溃【英文标题】:XCode crashes on deploying to Simulator when using RxCocoa 【发布时间】:2017-11-17 20:54:54 【问题描述】:

这可能与Xcode 9 crashes when debugging in swift 重复,但是因为我有一个新帐户,所以我不能在那里发表评论。

我正在使用 XCode 9.1 (9B55) 和 RxSwift / RxCocoa 4.0.0

我正在尝试将我的 TableView 代码迁移到 RxSwift,但每次我的 ViewController 加载到模拟器或我的设备上时,XCode 都会与应用程序一起崩溃。

ViewController 设置为我的 UIWindow 的 rootViewController,因此它是应用程序中加载的第一件事。

这是我的简化视图控制器:

import UIKit
import RxSwift
import RxCocoa

struct DummyProfile 
    let name: String
    let vid: String
    let userName: String


class ProfilesCollectionViewController: UITableViewController 

    private let disposeBag = DisposeBag()

    let profileList = [
            DummyProfile(name: "Test1", vid: "VIDASLKDHASKLDH", userName: "User"),
            DummyProfile(name: "Test1adasidhaskljdhaskljdhaksldhjaskdha", vid: "VIDASLKDHASKLDH", userName: "User"),
            DummyProfile(name: "86435543536543455324", vid: "VIDASLKDHASKLDH", userName: "fluigadshkljdhkldjsfgh ask jgfhaklseth kjahgkds")
        ]

    override func viewDidLoad() 
        super.viewDidLoad()

        tableView.register(ProfileCell.self, forCellReuseIdentifier: "ProfileCell")
        tableView?.alwaysBounceVertical = true
        tableView?.backgroundColor = .lightGray

        Observable.just(profileList).bind(to: tableView.rx.items(cellIdentifier: "ProfileCell", cellType: ProfileCell.self))  (_, model, cell) in
                cell.viewModel = model
            .disposed(by: disposeBag)
    

我认为我的 ProfileCells 的代码并不重要,因为它基本上只是几个 UIView 和 AutoLayout 的东西,当我不使用 RxCocoa / RxSwift 时,一切都得到确认。

这是 XCode 崩溃报告之一。我没有别的事可做:

https://pastebin.com/MPpuGZym

是我做错了什么还是我的工具链中的某个错误?

【问题讨论】:

【参考方案1】:

在浏览了 RxSwift github 问题后,我遇到了这个问题: https://github.com/ReactiveX/RxSwift/issues/1463

虽然不完全相同,但我尝试了建议的解决方案 - 将 Pod 的优化级别从无提升到快速。

成功了。

Screenshot of what helped.

【讨论】:

【参考方案2】:

我也有类似的情况,但是

tableView.datasource = nil

在 UITableViewController 的 viewDidLoad() 中 成功了

【讨论】:

以上是关于使用 RxCocoa 时 XCode 在部署到模拟器时崩溃的主要内容,如果未能解决你的问题,请参考以下文章

xcode 在模拟器上运行良好,但部署到 ios 6 时遇到错误

为啥我添加到我的 xcode 项目的音频文件在模拟器中可用,但在我在 iPhone 上部署应用程序时不可用

CocoaPods RxCocoa 3.6.1 构建在 Xcode 9 中失败

启动 iOS 模拟器时 XCode 锁定

Delphi FireMonkey iOS 应用程序:部署到 iPhone 模拟器 8.1 时出错

在 VSTS 上的云托管 Mac 上的 Xcode 中构建错误