1

ユーザーからログに記録された動きを実行するための再帰呼び出しがあります。次の再帰呼び出しを使用してアニメーションを実行しているときに、ユーザーが戻るボタンを押してビューコントローラーをスタックからポップすると、アニメーションが停止せず、コンソールにログエントリ(さまざまなログの動きを表す)が表示されます。

-(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メソッドに到達していないことをお伝えしておきます。

前もって感謝します。

よろしく、オベイド

4

1 に答える 1

1

おそらくインスタンス変数を使用してアニメーション/再帰を制御し、メソッド内から開始してviewDidAppearメソッドから停止する必要がありviewDidDisappearます。View Controller は、Navigation Controller からポップされたからといって必ずしも破棄されるわけではありません。

于 2012-08-20T15:00:06.137 に答える