如何暂停和恢复NStimer

Gau*_*rav 0 iphone

可能重复:
如何以编程方式暂停NSTimer?

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

我在视图中尝试此代码:

[mytimer pause];

// to resume
[mytimer resume];
Run Code Online (Sandbox Code Playgroud)

我尝试了那段代码,但是我收到一条警告:"NSTimer可能无法响应'暂停'"

我建立了这个警告,当我按下暂停按钮时,应用程序崩溃了.

Nav*_*mon 8

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

这样你就可以创建一个计时器,每秒都会输入一次回调myMethod.

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

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

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

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

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

 [myTimer invalidate];
Run Code Online (Sandbox Code Playgroud)

祝好运