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方法。

  • 相关阅读:
    常用的标签分类
    css 实现动态二级菜单
    5大主流浏览器内核
    MySQL里面的子查询
    Algolia Search
    Nginx配置
    PHP中Abstract与Interface区别
    Shell 基本语法
    百度 echarts K线图使用
    php_soap扩展应用
  • 原文地址:https://www.cnblogs.com/zhouyi-ios/p/5252396.html
Copyright © 2011-2022 走看看