我有这个代码:
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],这基本上设置和绘制一个 yes 和一个 no UIButton,并根据用户按下的内容更改“userAnswer”变量。
我的问题是这个循环执行得非常快,以至于 objectAtIndex 很快超出了数组的界限,并引发错误。我需要某种方法在 [drawYesNo] 方法期间暂停,并允许用户实际做出决定。
我知道 StackOverflow 上有类似问题的答案,但我就是搞不懂。有人可以为一个非常新的面向对象程序员解释一下吗?
最佳答案
我无法真正弄清楚代码的所有逻辑,但听起来您需要将其重构为不同的方法。您不应该将代码放在 while 循环中,而应该使用一种方法来完成大部分(全部?我不知道)您发布的内容(没有 while 循环)。您在应用程序启动时调用此方法一次,然后在用户单击按钮后 - 在按钮的操作方法中更改 userAnswer 的值,然后再次调用该方法。这种情况会一直持续下去,直到您的按钮方法满足某些条件,导致其停止。
关于objective-c - 暂停 Objective-C 运行时循环以获取用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11641590/