使用 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 中失败