美文网首页
UITableView重用机制原理及数据源同步处理

UITableView重用机制原理及数据源同步处理

作者: 滨滨_57b5 | 来源:发表于2019-01-31 14:52 被阅读0次

    重用机制

    代码
    cell = [tableView dequeueReusableCellWithIdentifier:identifier];

    机制

    • 系统会创建当前屏幕cell数+1个cell
    • 对UITableView向上滑动时,当第一个单元格完全滑出屏幕后,此时就会被加入到重用池中,接下来继续向上滑动时,当一个新的单元格出现时,就会根据指定的identifier标示符,从重用池中取出一个可重用的cell

    作用

    • 避免大量创建实例对象,减少内存消耗,从而提高滑动流畅性

    数据源同步问题

    场景描述

    • UITableView有一个数据源datasource,用户对datasource进行了删除某一个元素的操作,与此同时向服务器请求数据,请求后的数据会对datasource进行赋值操作,此时就产生了数据源同步的问题

    分析

    • 用户删除操作是在主线程,请求数据并赋值操作是在子线程,俩个线程会同时对datasource进行操作,会产生数据源同步问题

    解决方式

    • 并发访问、数据拷贝的方式:当用户进行删除操作后,将删除的元素进行拷贝记录,当请求数据时,用拷贝的元素与请求数据进行对比,然后进行同步的删除操作,最后再对datasource进行赋值,这样就解决了数据源同步问题(数据源数据较大时,会有拷贝带来的性能损耗)
    • 串行访问的方式:(请求数据时间过长时,会对删除操作有延时)
      //串行队列
      dispatch_async(serial,^{
            //子线程网络请求,数据解析
      })
    
     //串行队列
    diapatch_sync(serial,^{
        //主线程中删除datasource的某一个元素,因为是被加入到了串行队列,因此删除操作需要等待网络请求和数据解析结束后才能进行
    })
    
    dispatch_sync(main,^{
        //更新ui
    })
    

    相关文章

      网友评论

          本文标题:UITableView重用机制原理及数据源同步处理

          本文链接:https://www.haomeiwen.com/subject/xrsksqtx.html