【发布时间】:2017-04-18 05:36:14
【问题描述】:
在调试方案中运行时,如果您的代码是这样的,第 30 行会出现致命错误。
https://github.com/ReactiveX/RxSwift/blob/master/RxSwift/Observables/Implementations/Sink.swift
rxFatalError("Warning: Recursive call or synchronization error!")
如果我选择从 Debug 到 Release 的运行方案。致命错误不会显示。但我想知道我是否可以做点什么来抑制它。
class ViewController4: UIViewController {
var v = Variable(0)
var disposeBag = DisposeBag()
var notiBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
v.asObservable()
.subscribe(onNext: { _ in
let noti = Notification(name: MyNotificationName)
NotificationCenter.default.post(noti)
})
.disposed(by: disposeBag)
NotificationCenter.default.rx.notification(MyNotificationName)
.subscribe(onNext: { [unowned self] _ in
if self.v.value == 10 { self.notiBag = DisposeBag() }
else { self.v.value += 1 } // this line cause the issue
print(self.v.value)
self.counterTextView.text! += "\(self.v.value)\n"
})
.disposed(by: notiBag)
v.value = 0
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBOutlet weak var counterTextView: UITextView!
}
let MyNotificationName = Notification.Name.init(rawValue: "My Notification Name")
【问题讨论】:
-
您的代码似乎正在监听通知
MyNotificationName,然后转发了10 次?这真的是你想要的吗?
标签: fatal-error rx-swift suppress