IOS 计时器 NSTimer

转载 2013年12月02日 16:03:55

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 = [NSTimertimerWithTimeInterval:3.0 target:selfselector:@selector(timerFired:) userInfo:nilrepeats:NO];

[[NSRunLoopcurrentRunLoopaddTimer: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过去了.


使用代码例子:

在游戏循环中很好用的计时器
- (void)StartTimer
{
//repeats设为YES时每次 invalidate后重新执行,如果为NO,逻辑执行完后计时器无效
  [NSTimer  scheuledTimerWithTimeInterval:1.0/60.0  target: view  selector:@(timerAdvanced:) 
            userInfo:nil  repeats: YES];
}

- (void)timerAdvanced:(NSTimer *)timer//这个函数将会执行一个循环的逻辑
{
  //加一个计数器
  int  mTime;
  if (mTime == 0)
  {
    [timer invalidate];
    [self StartTimer];
  }
  mTime++;
  if(mTime >= 某个最大值MAXCOUNT)
    //处理某些逻辑
    。。。。。
    //在某处将 mTime重设为0
}
更多0

相关文章推荐

ios计时器NSTimer的使用

  • 2015年03月25日 19:05
  • 71KB
  • 下载

iOS 验证码 小技术之 UIButton NSTimer 计时器

iOS 验证码 小技术之 NSTimer 计时器 UIButton

iOS控件NSTimer计时器

先熟悉一下NSTimer(定时器)的常用属性// 启动 -(void)fire ; // 停止(注:这个是唯一一个可以将计时器从runloop中移出的方法。) - (void)invalidate; ...
  • Cituses
  • Cituses
  • 2016年09月29日 13:07
  • 715

ios NSTimer做的计时器(精确到微妙)

自己在学习过程中用到过NSTimer,当时在网上找了不少资料。现在自己做一个简单的demo跟大家分享。 我就直接在下面粘贴代码,希望能帮到一些初学iOS的朋友。 ViewController....

iOS雨笙 NSTimer(计时器)和NSUserDefaults(最轻量级的持久化)的简单应用

在iOS的编译过程中,有许多"短小精悍"的类,它们的代码量不多,但却非常实用并且复用率非常广,这篇博客中就简单介绍两个OC中的常用类 ---- NSTimer(计时器)和NSUserDefaults(...

IOS 计时器 NSTimer

IOS 计时器 NSTimer 分类: iphone技术2012-06-08 09:34 4638人阅读 评论(1) 收藏 举报 iostimerfiringdate游戏 ...
  • mrxiky
  • mrxiky
  • 2013年12月17日 15:39
  • 336

猫猫学IOS(十)UI之_NSTimer_ios计时器

猫猫分享,必须精品素材代码地址: 原文地址:http://blog.csdn.net/u013357243?viewmode=contents先看效果 代码原文地址:http://blog...

NSTimer实现的小计时器

  • 2015年11月07日 14:47
  • 671KB
  • 下载

NStimer(计时器)实现按钮的发送验证码的一个小demo

工程文件: 根视图控制器的代码不说了,主要的代码在 RootViewController.m中:#import "RootViewController.h"@interface RootViewC...

NSTimer 计时器 OC

注意:定时器的调用,放在主线程中最优! 在gcd dispatch_async中执行可能会无效!调用一次计时器方法:myTimer = [NSTimer scheduledTimerWithTimeI...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IOS 计时器 NSTimer
举报原因:
原因补充:

(最多只允许输入30个字)