IOS线程数据篇1之NSTimer定时器要注意的地方
来源:互联网 发布:美国签证 知乎 编辑:程序博客网 时间:2024/06/04 18:28
定时器是IOS中非常重要的一个部分,但是我们平时在使用的时候经常容易一些问题。
在不同线程中定时器的使用
定时器的精度
定时器的启动
计数时间使用的方法
先来看两种情况:
(1)主线程中使用定时器
ViewDidLoad:
NSTimer *timer = [NSTimerscheduledTimerWithTimeInterval:25.0target:selfselector:@selector(socketkeepavlietimeoutaction:)userInfo:nilrepeats:YES];;
这样使用是没有任何问题的,因为默认情况下主线程会默认自动创建一个RunLoop,这种情况下我们使用是不会有什么问题的,但是如果在子线程中使用定时器呢?如果直接使用上面的方法定时器是不会运行的。(2)非主线程中使用定时器
例如:
dispatch_queue_t que =dispatch_queue_create("cn.itcast.gcd2",DISPATCH_QUEUE_CONCURRENT);
dispatch_async(que, ^{
NSLog(@"设置keepalive超时时间的个数");
FWSocketClientInfo *SKinfo = (FWSocketClientInfo *)[notiobject];
NSTimer *timer = [NSTimerscheduledTimerWithTimeInterval:25.0target:selfselector:@selector(socketkeepavlietimeoutaction:)userInfo:nilrepeats:YES];;
SKinfo.SocketKeepAliveTimer = timer;
[[NSRunLoopcurrentRunLoop]addTimer:timerforMode:NSDefaultRunLoopMode];
[[NSRunLoopcurrentRunLoop]run];
});
};
这里创建了一个子线程,定时器是在子线程中运行的,必须要将定时器加到所有的RunLoop中。并且执行这个RunLoop。这样定时器才会正确的执行。(3)定时器的精度问题
这里尤其需要注意的是,比如我们想展示多帧动画 甚至视频,如果你想定时器来控制每帧图片的显示,那是很不现实的,定时器只能在一定程度上比如精确到秒的级别。而视频,如常见的30FPS,每帧图片时间间隔只有60ms左右,定时器用在这里是很不合适的。
(4)启动
点击NSTimer的方法可以看到:
尤其是要注意最后一句,如果设置成YES,那么定时器会按照设定的定时时间开始执行,每次定时间到都会执行这个语句,如果设置为NO,那么只有调用
[timer fire]
定时器才会执行。即使设置为YES属性,这里如果调用[timer fire]也会立即执行,而不会等到定时时间到了之后才执行,想让代码在一段延迟时间之后只执行一次,那么可以将这个属性设置为YES,执行一次之后 调用[timer
invalidate]取消这个定时器的使用。
(5)如果我们有的时候想获取一些时间间隔
那么还有一些比较简单的方法
如:
timeOutMark=[NSDatedate];
NSTimeInterval timeInterval=[timeOutMarktimeIntervalSinceNow];
这里获取的是两行代码的时间之差,注意一点这里得到的是负数。
- IOS线程数据篇1之NSTimer定时器要注意的地方
- 线程要注意的地方
- IOS 定时器NSTimer的使用
- iOS NSTimer 定时器的使用
- iOS-定时器的使用NSTimer
- IOS学习之定时器NSTimer的开启与关闭
- iOS中定时器NSTimer的使用
- iOS中定时器NSTimer的使用
- iOS中定时器NSTimer的使用
- iOS中定时器NSTimer的使用
- iOS中定时器NSTimer的使用
- iOS中定时器NSTimer的使用
- iOS中定时器NSTimer的使用
- iOS中定时器NSTimer的使用
- IOS 定时器(NSTimer)的使用
- iOS中定时器NSTimer的使用
- iOS中定时器NSTimer的使用
- iOS中定时器NSTimer的使用
- 数据库锁的粒度
- 【Linux数据库】Redis安装配置
- 计算机组成原理
- linux下查看TCP网络连接情况
- 我不知道的跆拳道(一)
- IOS线程数据篇1之NSTimer定时器要注意的地方
- cocos2d-x CCMenu详细源码分析
- HTML5新标签及陌生标签的备忘录
- 茫然,觉悟
- 浏览器 事件流
- poj 1703 Find them, Catch them(并查集)
- Cocos2d-x教程(35)-三维拾取Ray-AABB碰撞检测算法
- java中类与类之间的关系
- 标准盒模型和IE盒模型