如何暂停和恢复NStimer

时间:2011-01-25 06:35:07

标签: iphone

  

可能重复:
  How can I programmatically pause an NSTimer?

我有一个问题。如何使用计时器暂停倒计时?我正在开发一款游戏。在游戏中,我需要在计时器暂停时进入下一个视图,并在返回后我想恢复它。

我在视图中尝试此代码:

[mytimer pause];

// to resume
[mytimer resume];

我尝试了这段代码,但我收到一条警告:“NSTimer可能无法回应'暂停'”

我使用该警告构建,当我按下暂停按钮时,应用程序崩溃。

3 个答案:

答案 0 :(得分:8)

NSTimer确实没有恢复和暂停方法,因此在发生此类警告后,您最终可能会在运行时崩溃。通常,您可以创建两种计时器(请参阅NSTimer类引用),一种只执行一次,第二次重复执行。例如:

这样你就可以创建一个定时器,它将每秒输入一次回调myMethod。

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

你可能会选择这个为你的目的,你班上应该保留一些

BOOL pause变量和回调myMethod执行以下操作:

 - (void) myMethod:(NSTimer *) aTimer
{
     if (!pause) {
       // do something
       // update your GUI
     }
}

您可以在代码中的某处更新暂停。 要停止计时器(并释放它),请致电

 [myTimer invalidate];
祝你好运

答案 1 :(得分:1)

你想要的是OpenGLES应用程序带给你的东西。您应该创建两个这样的方法:

- (void)startAnimation 
{
    self.animationTimer = [NSTimer scheduledTimerWithTimeInterval:animationInterval target:self selector:@selector(selector) userInfo:nil repeats:YES];
}

- (void)stopAnimation 
{
     [animationTimer invalidate];
      animationTimer = nil;
}

就是这样。

答案 2 :(得分:0)

请参阅NSTimer Class Reference,没有pause方法。