记一个花了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解决。
 
posted @ 2014-11-04 20:26  ashamp  阅读(285)  评论(0编辑  收藏  举报