接手的項目線上突然出現(xiàn)了一個bug~

bug
很明顯的數(shù)組越界,定位到指定控制器。emmm~ 這么多數(shù)組,也沒法定位到那個數(shù)組越界了。
不要急,分析后發(fā)現(xiàn),[0~9]取第59個。這個數(shù)組,很分頁??! 十有八九出在這里了~
先看看代碼~
controller:
[[RACObserve(self.viewModel, loadState) deliverOn:RACScheduler.mainThreadScheduler]
subscribeNext:^(NSNumber *loadStateNumber) {
...
[self.tableView reloadData];
}];
viewModel:
[request SuccessBlock:^( NSDictionary *data) {
@strongify(self)
self.loadState =Success;
...數(shù)據(jù)賦值
} failureBlock:^( NSString *errMsg, NSInteger errCode) {
}];
很明顯寫的有問題,應(yīng)該是先數(shù)據(jù)賦值,然后再刷新UI。問題應(yīng)該就是這里了!
但是,按理說應(yīng)該是必奔潰的問題,為什么一直沒有發(fā)現(xiàn)呢?
試驗了一下,神奇的事情發(fā)生了,這么寫居然是沒有問題的!
viewModel數(shù)據(jù)賦值完成后,controller才會刷新。。。奇怪,哪里怪怪的。
去掉控制器的mainThreadScheduler又試了一下,果然,必現(xiàn)。奇怪了,賦值,狀態(tài)改變,UI刷新都是在main線程的,我以為mainThreadScheduler這句代碼沒什么用,ReactiveObjC內(nèi)部不知道干了些什么。。。
記得18年時候試過一次ReactiveObjC,結(jié)果通知一直釋放不了,之后就一直比較抵觸這個東西。后來直接上手了RxSwift,沒想到又栽在這里。。