當在Debug方案中運行時,如果你的代碼是這樣的,則第30行有一個致命錯誤。如何抑制RxSwift中的指定錯誤?
https://github.com/ReactiveX/RxSwift/blob/master/RxSwift/Observables/Implementations/Sink.swift
rxFatalError("Warning: Recursive call or synchronization error!")
如果我選擇從調試運行方案發布。致命錯誤不會顯示。但我想知道我是否可以採取一些行動來壓制它。
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倍?那真的是你想要的嗎? –