所以我的菜单用这段代码调用游戏:
game = [[Game alloc] init];
[self presentModalViewController:memoryTest animated:FALSE];
然后出现一个带倒计时的UIViewController。玩家可以在倒计时期间返回菜单。然而,当我尝试这个时,倒计时一直在运行并最终开始游戏,甚至认为UIViewController已被解雇(因此UIView已经消失)在backToMenu方法中。
[self.parentViewController dismissModalViewControllerAnimated:FALSE];
我试图在菜单的viewDidAppear方法中释放游戏对象,但没有运气。我想到了一个“退出”BOOL值,所以倒计时可以检查玩家是否退出游戏,但必须有更好的方法来释放一个对象并停止其中的所有方法调用。
感谢您帮助我。
CountDown方法:
- (void)countDown {
SoundEffect *sound = [[SoundEffect alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"tick" ofType: @"wav"]];
[sound playAndRelease];
if(self.countDownStep > 0) {
feedback.image = [UIImage imageNamed:[NSString stringWithFormat:@"countdown%d.png",self.countDownStep]];
feedback.hidden = FALSE;
[self performSelector:@selector(countDown) withObject:nil afterDelay:0.8];
}
else {
[self displayMessage:self.startMessage];
[self.game performSelector:@selector(start) withObject:nil afterDelay:0.8];
[self performSelector:@selector(hide) withObject:nil afterDelay:0.8];
}
self.countDownStep--;
}
答案 0 :(得分:0)
你如何处理倒计时?看起来你想在你提到的UIViewController的viewWillDisappear方法中明确地取消倒计时。
答案 1 :(得分:0)
我假设你会使用类似NSTimer的东西。事实上,这可能仍然不是一个坏主意。 NSTimer可以每0.8秒处理一次倒计时方法。如果将值减小为0,则倒计时已过期。如果您的视图消失,则在viewWillDisappear中使计时器无效。
答案 2 :(得分:0)
在viewcontroller的viewWillDisappear中,检查计时器是否正在运行。如果是,则只是使其无效。
[timerObject invalidate]将停止计时器