核心技术点
- 选用GCD timer
精确 易用 - timer 要定义为成员变量,否则会立即释放
- 校准本地时间
服务器请求当前时间,并以此为准 - 计时器处理数据源,然后更新视图
- 采用给cell重新赋值的方式更新,不采用reloadData
原因:频繁调用reloadData去刷新UITableView,会发现有事件冲突,滚动的时候不够流畅,滚动的位置有时候并不是自己想要的 - 仅更新可见cell visibleCells 即可,数据量大不卡顿
// 可见cell NSArray *cells = self.tableView.visibleCells;
- 采用给cell重新赋值的方式更新,不采用reloadData
- 程序从前台到后台,再回到前台
退到后台,计时器会停止,此时回到前台应该监听,然后重新请求数据,重新计时
// 监听程序由后台回到前台
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(requestData) name:UIApplicationDidBecomeActiveNotification object:nil];
- 计时器释放
// 计时器不用时 销毁
dispatch_source_cancel(self.timer);
注意好以上几个点,自己也可以写出很好用的计时器列表。
over.
参考
iOS的几种定时器及区别
cell (iOS表格) - 简单实现一个定时器管理600个倒计时
iOS用定时器刷新列表Cell进行行倒计抢单功能
网友评论