1、初始化

+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;

+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;

注:不用scheduled方式初始化的,需要手动addTimer:forMode: 将timer添加到一个runloop中。

  而scheduled的初始化方法将以默认mode直接添加到当前的runloop中.

举例:

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:10.0 target:self selector:@selector(timerFired:) userInfo:nil repeats:NO];

NSTimer *myTimer = [NSTimer  timerWithTimeInterval:3.0 target:selfselector:@selector(timerFired:)userInfo:nilrepeats:NO];

[[NSRunLoop  currentRunLoop] addTimer:myTimerforMode:NSDefaultRunLoopMode];

2、触发(启动)

当定时器创建完(不用scheduled的,添加到runloop中后,该定时器将在初始化时指定的timeInterval秒后自动触发。

可以使用-(void)fire;方法来立即触发该定时器;

注:You can use this method to fire a repeating timer without interrupting its regular firing schedule. If the timer is non-repeating, it is automatically invalidated after firing, even if its scheduled fire date has not arrived.

在重复执行的定时器中调用此方法后立即触发该定时器,但不会中断其之前的执行计划;

在不重复执行的定时器中调用此方法,立即触发后,就会使这个定时器失效。

3、停止

- (void)invalidate;

这个是唯一一个可以将计时器从runloop中移出的方法。

注:

NSTimer可以精确到50-100毫秒.

NSTimer不是绝对准确的,而且中间耗时或阻塞错过下一个点,那么下一个点就pass过去了.

延时函数和Timer的使用

//延时函数:

[NSThread sleepForTimeInterval:5.0]; //暂停5s.

//Timer的使用:

NSTimer *connectionTimer;  //timer对象

//实例化timer

self.connectionTimer=[NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(timerFired:) userInfo:nil repeats:NO];

[[NSRunLoop currentRunLoop]addTimer:self.connectionTimer forMode:NSDefaultRunLoopMode];

//用timer作为延时的一种方法

do{

[[NSRunLoopcurrentRunLoop]runUntilDate:[NSDatedateWithTimeIntervalSinceNow:1.0]];

}while(!done);

//timer调用函数

-(void)timerFired:(NSTimer *)timer{

done =YES;

}

最新文章

  1. Unity3d中C#使用指针(Unsafe)的办法(转)
  2. 转:Spring AOP术语
  3. [Java] Collections的简单运用
  4. PC/UVa 题号: 110106/10033 Interpreter (解释器)题解 c语言版
  5. C++ 命名规范小结
  6. NS2仿真:使用NS仿真软件模拟简单网络模型
  7. 利用Javamail接收QQ邮箱和Gmail邮箱(转)
  8. D13
  9. android设备的vpn功能
  10. 阿里云RDS SQL Server 2008 R2 使用本地SQL备份文件还原全过程
  11. RMI基础篇
  12. hibernate框架学习笔记6:事务
  13. scrollview 嵌套imageview显示长图
  14. mySQL简单操作(二)
  15. Bootstrap Web框架
  16. Yii2 数据搜索类 PostSearch
  17. 一次聊天引发的思考--java并发包实战
  18. java中与和或的注意点
  19. Webform和MVC,为什么MVC更好一些?(转)
  20. navicat远程连接oracle

热门文章

  1. Kotlin编译器使用及反编译分析
  2. Linux添加shell(.sh)脚本并添加定时任务
  3. P2661 信息传递[最小环+边带权并查集]
  4. React 之 render props 的理解
  5. Js数组排序以及对象排序
  6. 除了不要 SELECT * ,程序员使用数据库还应知道的11个技巧
  7. js事件冒泡/捕获
  8. git生成ssh公私钥
  9. 最短路--SPFA及其优化
  10. 35 | join语句怎么优化?