美文网首页
记一次ReactiveObjC的神奇bug

记一次ReactiveObjC的神奇bug

作者: 携一两本单色书来 | 来源:发表于2021-07-15 19:40 被阅读0次

接手的项目线上突然出现了一个bug~


bug

很明显的数组越界,定位到指定控制器。emmm~ 这么多数组,也没法定位到那个数组越界了。

不要急,分析后发现,[0~9]取第59个。这个数组,很分页啊! 十有八九出在这里了~

先看看代码~

controller:

[[RACObserve(self.viewModel, loadState) deliverOn:RACScheduler.mainThreadScheduler]
     subscribeNext:^(NSNumber *loadStateNumber) {
...
[self.tableView reloadData];
}];

viewModel:

    [request SuccessBlock:^( NSDictionary *data) {
        @strongify(self)
     
        self.loadState =Success;
       
       ...数据赋值
        
    } failureBlock:^( NSString *errMsg, NSInteger errCode) {
       
    }];

很明显写的有问题,应该是先数据赋值,然后再刷新UI。问题应该就是这里了!

但是,按理说应该是必奔溃的问题,为什么一直没有发现呢?

试验了一下,神奇的事情发生了,这么写居然是没有问题的!
viewModel数据赋值完成后,controller才会刷新。。。奇怪,哪里怪怪的。

去掉控制器的mainThreadScheduler又试了一下,果然,必现。奇怪了,赋值,状态改变,UI刷新都是在main线程的,我以为mainThreadScheduler这句代码没什么用,ReactiveObjC内部不知道干了些什么。。。

记得18年时候试过一次ReactiveObjC,结果通知一直释放不了,之后就一直比较抵触这个东西。后来直接上手了RxSwift,没想到又栽在这里。。

相关文章

  • 记一次ReactiveObjC的神奇bug

    接手的项目线上突然出现了一个bug~ 很明显的数组越界,定位到指定控制器。emmm~ 这么多数组,也没法定位到那个...

  • 05. getWriter()has already been

    记一次bug fixed: getWriter()has already been called for this...

  • OC开源框架 - ReactiveObjC

    ReactiveObjC ReactiveObjC是ReactiveCocoa的Objective-C版本,它是一...

  • IOS中 导入 ReactiveObjC ReactiveOb

    项目工程中 ReactiveObjC 会报以下错误: ReactiveObjC/NSObject+RACPrope...

  • 记一次BUG

    一、如何快速的给大量轨迹点打上区划代码?1、高德爬取街道中心点,行政区划中心点和边界。2、精度要求较高的,将边界加...

  • 记一次bug

    错误细节,用户名无法拖动,其他的栏都可以对应的长短拖动(表头和表格内容一起动) 代码: 错误原因,在第一栏这个fi...

  • 记一次BUG

    这里审核出错 后台写的: 出错原因,这里判断也examine_status ==1,这里不行,这成Boolean了...

  • 异步组件懒加载 获取不到ref

    关键字:获取不到ref,异步组件,$refs记一次异步组件导致的bug 目前这个bug只在打包环境出现,本地环境不...

  • scrollToRowAtIndexPathd 的神奇bug

    estimatedRowHeight 会影响 scrollToRowAtIndexPath:atScrollPos...

  • ReactiveObjC看这里就够了

    1、什么是ReactiveObjC ReactiveObjC是ReactiveCocoa系列的一个OC方面用得很多...

网友评论

      本文标题:记一次ReactiveObjC的神奇bug

      本文链接:https://www.haomeiwen.com/subject/wpempltx.html