iOS 利用KVO高效地实现倒计时功能
2015-11-07 23:56
316 查看
电商项目中, 有很多地方需要用到倒计时, 比如sectionHeader可能需要个倒计时, cell上也可能需要个倒计时.
封装自定义View的时候,比较常见的做法是, 每个自定义view内部,都生成并持有一个Timer, 然后这个自定义view的接口方法做成下面这样(具体视服务器接口而定):
- (void)configCountdownWithBeginTime:(NSString *)beginTime endTime:(NSString *)endTime;
- (void)configCountdownWithSeconds:(NSInteger)seconds;
如果一个控制器里有很多倒计时, 上面这种设计,就不太好了.
下面介绍的这种倒计时的设计思路, 很适合一个控制器有若干个倒计时的应用场景:
1. 控制器需要有一个表示当前时间的属性now
2. 控制器需要一个倒计时timer (NSTimer或GCDTimer都OK, 注意避免Timer和控制器循环引用), 倒计时的任务就是定时去更新属性now: self.now = [NSDate date];
3. 用于展示倒计时的自定义view, 自定义view通过KVO监听控制器的属性now
封装自定义View的时候,比较常见的做法是, 每个自定义view内部,都生成并持有一个Timer, 然后这个自定义view的接口方法做成下面这样(具体视服务器接口而定):
- (void)configCountdownWithBeginTime:(NSString *)beginTime endTime:(NSString *)endTime;
- (void)configCountdownWithSeconds:(NSInteger)seconds;
如果一个控制器里有很多倒计时, 上面这种设计,就不太好了.
下面介绍的这种倒计时的设计思路, 很适合一个控制器有若干个倒计时的应用场景:
1. 控制器需要有一个表示当前时间的属性now
2. 控制器需要一个倒计时timer (NSTimer或GCDTimer都OK, 注意避免Timer和控制器循环引用), 倒计时的任务就是定时去更新属性now: self.now = [NSDate date];
3. 用于展示倒计时的自定义view, 自定义view通过KVO监听控制器的属性now
相关文章推荐
- iOS开发系列--让你的应用“动”起来
- iOS开发系列--数据存取
- iOS开发系列--地图与定位
- [iOS开发项目-11] 英雄列表
- iOS__推送通知
- iOS中BOOL和bool的区别
- iOS中类和对象还有,nil/Nil/NULL的区别
- iOS之多线程---Runloop和多线程
- iOS 继承
- ASUS X202E开机直接进BIOS退不出来了
- ios中的数据存储
- iOS之AsyncSocket使用心得
- 芒果iOS之显示隐藏资源库Library
- ios开发中MVC模式的理解
- iOS__拍照
- iOS__视频录制
- 中文字转拼音取首字母
- iOS讲解迷惑--MD5加密
- 模拟器可以直接把Mac 的桌面文件做为iOS调试时存储的位置
- iOS讲解迷惑--XMPP进阶 添加好友, 与好友聊天 (包括登录注册)