现在的位置: 首页 > 综合 > 正文

Objective-c定时器

2017年11月30日 ⁄ 综合 ⁄ 共 1260字 ⁄ 字号 评论关闭

我们可能要实现一个时钟,并且每分钟都要更新显示;或者想要向用户显示一条消息并且在一段时间之后让它消失。

我们可以使用NSTimer类来给应用程序添加这种功能。定时器允许我们在给定的时间段之后执行一段代码。

创建一个定时器最简单的方法就是使用类方法:

  1. NSTimer *myTimer = [NSTimer  
  2. -cheduledTimerWithTime  
  3. -nterval:10.0 target:self  
  4. -elector:@selector(myTimerAction:)  
  5. -serInfo:nil repeats:NO]; 

这将会创建一个定时器,它从现在开始10秒后调用myTimerAction:方法。注意userInfo参数:它允许我们向定时器方法传递任何对象。向repeats参数传递NO,意味着定时器方法将只调用一次。如果传递YES,定时器将会每10秒钟重复调用一次。

下面,我们实现myTimerAction:方法:

  1. -(void)myTimerAction:(NSTimer *)  
  2. -imer  
  3. {  
  4. NSLog(@"timer fired!: %@",[timer  
  5. -serInfo]);  

这个定时器把自身作为参数传递给该方法。注意在创建时间的时候,如何能够获得所添加的userInfo对象(在这个例子中,是nil)。

要停止一个定时器,可以调用如下代码:

  1. [myTimer invalidate]; 

也可以创建稍后才想要运行的定时器:

  1. myTimer = [[NSTimer timerWith  
  2. -imeInterval:10.0 target:self  
  3. -elector:@selector(myTimerAction:)  
  4. -serInfo:nil repeats:NO] retain]; 

然后,当你准备好启动定时器的时候,使用如下代码:

  1. [[NSRunLoop mainRunLoop]  
  2. -ddTimer:myTimer forMode:  
  3. -SDefaultRunLoopMode]; 

创建一个定时器的另一种较少用到的方法,可以使用如下的代码:

  1. NSTimeInterval *secondsPerDay =  
  2.  
  3. 4*60*60;  
  4. NSDate *tomorrow = [NSDate  
  5. -ateWithTimeIntervalSinceNow:  
  6. -econdsPerDay];  
  7. myTimer = [[NSTimer alloc]  
  8. -nitWithFireDate:tomorrow  
  9. -nterval:10.0 target:self  
  10. -elector:@selector(myTimerAction:)  
  11. -serInfo:nil repeats:YES]; 

这段代码创建一个定时器,它明天运行并且每10秒钟重复一次。

其次,我们需要调用addTimer:forMode:来真正地启动定时器;最后,我们已经创建了一个定时器,它在一个确定的时间点第一次触发。程序清单1-8给出使用定时器的一个例子。

程序清单1-8使用定时器

抱歉!评论已关闭.