停止编程循环

时间:2010-12-10 23:09:53

标签: iphone loops

首次点击我的主viewController时,它会开始显示一个演示(重复时),如下所示:

showingDemo = YES;
[self startDemo];

- (void)startDemo {
    if (showingDemo) {
        [self performSelector:@selector(stepone) withObject:nil afterDelay:1.5f];
        [self performSelector:@selector(steptwo) withObject:nil afterDelay:2.0f];
        [self performSelector:@selector(stepthree) withObject:nil afterDelay:3.8f];
        [self performSelector:@selector(stepfour) withObject:nil afterDelay:4.3f];  
        [self performSelector:@selector(startDemo) withObject:nil afterDelay:5.6f];
    }
}

第二次点击时,我将新的ViewController带到屏幕

showingDemo = NO;
[self.view addSubview:newView];

我认为这会阻止无休止的循环。

当用户返回我的主viewController时:

[newView.view removeFromSuperview];

再次点击屏幕:

showingDemo = YES;
[self startDemo];

在测试我的应用程序时,如果我快速点击回来(在循环有时间结束之前,程序似乎正在循环两次 - 先前正在进行的程序和新程序 - 因此它看起来全部奇怪的是,'stepthree'功能在'stepone'之前发生,等等。

任何人都知道一个更好的方法来停止我编程好的循环,这样当我以后再次启动它时,它不会运行多个循环,认为前一个尚未完成?

非常感谢!

1 个答案:

答案 0 :(得分:3)

当您将showsDemo设置为NO时,请调用NSObject的cancelPreviousPerformRequestsWithTarget:取消所有待处理的执行请求:

showingDemo = NO;
[NSObject cancelPreviousPerformRequestsWithTarget:self];
[self.view addSubview:newView];