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

  • 相关阅读:
    USACO 3.3 A Game
    USACO 3.3 Camelot
    USACO 3.3 Shopping Offers
    USACO 3.3 TEXT Eulerian Tour中的Cows on Parade一点理解
    USACO 3.3 Riding the Fences
    USACO 3.2 Magic Squares
    USACO 3.2 Stringsobits
    USACO 3.2 Factorials
    USACO 3.2 Contact
    USACO 3.1 Humble Numbers
  • 原文地址:https://www.cnblogs.com/zhouyi-ios/p/5252396.html
Copyright © 2011-2022 走看看