暂停用户输入的objective-c运行时循环

时间:2012-07-25 01:48:08

标签: objective-c ios cocoa-touch runtime

我有这段代码:

   while (!found) {

    char letterGuess=(char)([[[wordList letterRank:lengthOfWord]objectAtIndex:yescount]intValue]+97);
    NSString *stringLetter=[NSString stringWithFormat:@"%c",letterGuess];

    if ([prevGuess count]<=0) {
        alreadyGuessed=NO;
    }else {
        if ([prevGuess containsObject:stringLetter]) {
            alreadyGuessed=YES;
            yescount++;
        }else{
            alreadyGuessed=NO;
        }
    }

    if (!alreadyGuessed) {
        [prevGuess addObject:stringLetter];
        [self drawYesNo];
        NSLog(@"%c",letterGuess);
    }

    if (userAnswer) {

    }else {
        [self noGuess:letterGuess];
    }

    if ([wordList count]<=1) {
        NSLog(@"word found");
        found=YES;
    }

}

基本上,它从一个有序数组中取一个字母,将它与另一个包含所有先前输入的字母的数组进行检查,如果它不在该数组中,它将调用[self drawYesNo],它基本上设置了绘制是和否UIButton,并根据用户按下的内容,更改'userAnswer'变量。

我的问题是这个循环执行得如此之快,以至于objectAtIndex快速超出数组的边界,并抛出错误。我需要一些方法在[drawYesNo]方法中暂停,并允许用户实际做出决定。

我知道StackOverflow上有类似问题的答案,但我无法对它们做出正面或反面。有人可以为一位非常新的OO程序员解释这个吗?

1 个答案:

答案 0 :(得分:1)

我无法弄清楚代码的所有逻辑,但听起来你需要将它重构为不同的方法。而不是让代码在while循环中,你应该有一个方法对你发布的内容(没有while循环)做大多数(所有?我无法分辨)。您在应用程序启动时调用此项,然后在用户单击按钮后调用此项 - 在按钮的操作方法中更改userAnswer的值,然后再次调用该方法。这一直持续到你的按钮方法满足某些条件会导致它停止。