从navigationcontroller弹出视图后,递归不会停止

时间:2012-08-20 14:55:57

标签: iphone objective-c ios sdk

我有一个递归调用来执行用户的一些记录移动。虽然使用以下递归调用执行动画,但如果用户按下后退按钮将视图控制器弹出堆栈,则动画不会停止,我可以在控制台上看到日志条目(表示不同的日志移动)。

-(void)replayNextLog {
    if ((replayLogIndex < [lastTurnGameLogList count]-1) && (!skipReplayButtonWasPressed)) {
        float delayToNextReplay;

        //the replayLogIndex ends with count-1 because the last one is empty due to the last empty line
        NSDictionary *logEntryDict = [lastTurnGameLogList objectAtIndex:replayLogIndex];

        for (id key in logEntryDict) {
            if ([key isEqualToString:kGuessMoveTypeLetterButton]) {

            } else if ([key isEqualToString:kGuessMoveTypeRevealHint]) {

            } else if ([key isEqualToString:kGuessMoveTypeReset]) {

            } else if ([key isEqualToString:kGuessMoveTypePass]) {

            } else if ([key isEqualToString:kGuessMoveTypeShuffle]) {

            }
        }

        replayLogIndex++;

        // Recursive call
        [self performSelector:@selector(replayNextLog) withObject:nil afterDelay:delayToNextReplay];
    }
}

可能是因为视图控制器中有任何泄漏?为方便起见,我告诉你我没有达到VC的dealloc方法。

提前致谢。

此致 奥贝德

1 个答案:

答案 0 :(得分:1)

您需要控制动画/递归,可能使用实例变量,并从viewDidAppear方法中启动它,并从viewDidDisappear方法中停止它。视图控制器不一定是因为它从导航控制器中弹出而被销毁。