zoukankan      html  css  js  c++  java
  • 记一个花了3个小时解决的BUG

    今天下午开始给我的app的下载功能写删除下载的逻辑

    在这个逻辑中,点击了删除按钮后:

         1,当该cell正处于下载中时
              1,首先暂停全部cell
              2,删除该cell
              3,开始下载其他手动开始的cell
         2,当该cell处于下载暂停中时
              1,其他cell正在下载,暂停全部cell
              2,删除该cell
              3,开始下载其他手动开始的cell
    根据这个逻辑开始编写代码,2个小时后代码编写完成,但是预期与实际表现总是不一样,不停的提示数组越界的错误闪退。
    然后花了3个小时,终于找到了BUG:
    在某个cell执行了一个删除操作后,有一个HUD显示出来提示操作完成。坑爹的地方来了
     有些代码是在这个HUD的completionBlock中执行的,但是逻辑上的“开始下载其他手动开始的cell”代码应当是在completionBlock执行完后再执行的,这就导致了在HUD消失之前,completionBlock都不会执行,然后应该在completionBlock执行完后再执行的代码就提前执行了。
    由于删除操作删除了tableview的数据源的一些对象,但是下载器对cell的回调还要访问已经删除的cell,就导致了数组越界。
    后来,将开始下载其他手动开始的cell的逻辑也放入completionBlock中,BUG解决。
     
  • 相关阅读:
    重温redis命令
    CI框架整合yar
    redis 常用配置
    php 安装yar扩展
    linux 最小安装 需要的后续操作
    centos7 安装php7+mysql5.7+nginx+redis
    mysql 存储过程和事件调度
    mysql的分区和分表
    mysql 范式和反范式
    mysql服务器和配置优化
  • 原文地址:https://www.cnblogs.com/ashamp/p/4074674.html
Copyright © 2011-2022 走看看