首次点击我的主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'之前发生,等等。
任何人都知道一个更好的方法来停止我编程好的循环,这样当我以后再次启动它时,它不会运行多个循环,认为前一个尚未完成?
非常感谢!
答案 0 :(得分:3)
当您将showsDemo设置为NO时,请调用NSObject的cancelPreviousPerformRequestsWithTarget:
取消所有待处理的执行请求:
showingDemo = NO;
[NSObject cancelPreviousPerformRequestsWithTarget:self];
[self.view addSubview:newView];