iOS 精确 高效 计时器列表

核心技术点

  1. 选用GCD timer
    精确 易用
  2. timer 要定义为成员变量,否则会立即释放
  3. 校准本地时间
    服务器请求当前时间,并以此为准
  4. 计时器处理数据源,然后更新视图
    • 采用给cell重新赋值的方式更新,不采用reloadData
      原因:频繁调用reloadData去刷新UITableView,会发现有事件冲突,滚动的时候不够流畅,滚动的位置有时候并不是自己想要的
    • 仅更新可见cell visibleCells 即可,数据量大不卡顿
        // 可见cell
        NSArray *cells = self.tableView.visibleCells;
      
  5. 程序从前台到后台,再回到前台
    退到后台,计时器会停止,此时回到前台应该监听,然后重新请求数据,重新计时
// 监听程序由后台回到前台
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(requestData) name:UIApplicationDidBecomeActiveNotification object:nil];
  1. 计时器释放
// 计时器不用时 销毁
dispatch_source_cancel(self.timer);

注意好以上几个点,自己也可以写出很好用的计时器列表。
over.

参考

iOS的几种定时器及区别
cell (iOS表格) - 简单实现一个定时器管理600个倒计时
iOS用定时器刷新列表Cell进行行倒计抢单功能

你可能感兴趣的:(iOS 精确 高效 计时器列表)