时钟的实现
最近的项目中涉及到一个时钟的功能,每个页面都要有这个时间。由于还没想到能直接获取纽约时间的方法,且要保持保持时间不被修改。目前就采用了由后台返回目前的纽约时间,客户端显示的时间就直接1秒1秒计算,所以就想到用计时器的方法。
//开始计时
- (void)beginTimer
{
[self endTimer];
_nd_timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerAction:) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:_nd_timer forMode:NSRunLoopCommonModes];
}
//结束计时
- (void)endTimer
{
[_nd_timer invalidate];
_nd_timer = nil;
}
-
注意:
-
NSTimer在UIScrollView中的使用
- 若mode设置为NSDefaultRunLoopMode,当在scrollView 中滑动的时候,定时器会暂停,原因是滑动的时候runloop是UITrackingRunLoopMode;
- runloop 同一时刻只能在一个mode 上来运行,其他 mode 上的任务暂停;
- mode设置为 NSRunLoopCommonModes ,因为NSRunLoopCommonModes 包含了 NSDefaultRunLoopMode 和 UITrackingRunLoopMode,所以滑动的时候也能响应定时器。