陈斌彬的技术博客

Stay foolish,stay hungry

Objective-C NSTimer

cocoa touch 库提供的时间定时器。使用时记住3要素:

  1. 时间间隔。NSTimeInterval 浮点型
  2. 事件代理。delegate,一般填 self
  3. 事件处理方法@selector();

下面的这个定时器会每分钟调用一次调用 myMethod。

[NSTimer scheduledTimerWithTimeInterval:1 
    target:self 
    selector:@selector(myMethod) 
    userInfo:nil 
    repeats:YES];

当我们需要给定时器的处理函数 myMethod 传参数的时候怎么办?用 userInfo 属性。

1.首先创建一个定时器:

[NSTimer scheduledTimerWithTimeInterval:1 
    target:self 
    selector:@selector(myMethod:) 
    userInfo:myObject 
    repeats:YES];

  2.然后传递 NSTimer 对象到处理函数:

-(void)myMethod:(NSTimer*)timer {
    // Now I can access all the properties and methods of myObject
    [[timer userInfo] myObjectMethod];
}

  用 invalidate 来停止定时器:

[myTimer invalidate];
myTimer = nil; // ensures we never invalidate an already invalid Timer