zoukankan      html  css  js  c++  java
  • reload方法

    一、什么情况下使用reload方法?

    当显示数据改变时,需要通过reloadData重新加载数据。

    二、用reloadData时,遇到什么问题?

    1、在tableView滚动时,调用reloadData方法,发生了crash情况。因为没有遵守原则:在改变显示数据后,没有立刻调用reloadData。

    不安全示例:

    -(void) changeDatasource_backgroundThread
    {
      @autoreleasepool{
        [self.dataSourceArray removeAllObjects]; 
        [self.tableViewperformSelectorOnMainThread:@selector(reloadData)   withObject:nil waitUntilDone:NO];
      }
    }

    错误点是:数据修改发生在后台线程,而reloadData发生在主线程。

    正确姿势:

    1)数据修改后,将修改后的数据发给处于监听状态的主线程,并触发主线程的reloadData方法。

    2)在后台线程,添加如下代码:

    dispatch_async(dispatch_get_mian_queue(),^{
       self.dataSourceArray = newArray;
       [self.tableView reloadData];
    })

    总是在主线程修改dataSource,并且随后在主线程立马调用reloadData方法。

  • 相关阅读:
    base64模块的使用
    14-类的结构之一:属性
    13-类和对象
    12-数组的常见异常
    11-Arrays工具类的使用
    10-二维数组
    09-一维数组
    08-数组的概述
    07-流程控制
    06-运算符
  • 原文地址:https://www.cnblogs.com/zhouyi-ios/p/5252396.html
Copyright © 2011-2022 走看看