Мне нужна помощь с некоторой логикой программирования ... Мне нужно закодировать этот метод, чтобы отобразить математическую задачу в моих меток, затем sleep(5)
, а затем снова петлю. Все, что я пробовал, заканчивает замораживание программы. Пожалуйста помоги! Я рвал мои волосы, пытаясь все, что знаю!Cocoa Touch - Looping Help
EDIT: Я редактировал код этого, через 3 секунды она исчезает ярлык, отображающее эту проблему, но затем он упал и отладчик отображает 2010-08-06 10:43:27.776 Reactor [13444:207] modifying layer that is being finalized - 0x5c13500
//quickfire problems
-(void)simpleMath{ //"Tap when the answer is X"
isTimeToTap = NO;
int problemSelector = arc4random() % 4;
NSArray *mathProblems = [[NSArray alloc] initWithObjects:@"6 - 1",@"2 + 3",@"3 x 2",@"3 x 1",@"2 x 4",nil]; //correct index 2
NSArray *mathAnswers = [[NSArray alloc] initWithObjects:@"5",@"5",@"6",@"3",@"8",nil]; //correct index 2
if ([mathAnswers objectAtIndex:problemSelector] == @"6") {
isTimeToTap = YES;
}
if (ranBefore == NO) { //create labels
//tell when to tap
tapTellerTop.text = @"Tap when the answer is 6!";
tapTellerBottom.text = @"Tap when the answer is 6!";
//make bottom label
mathDisplayBottom = [[UILabel alloc] initWithFrame:CGRectMake(15, 250, 242, 92)];
mathDisplayBottom.font = [UIFont fontWithName:@"Helvetica" size: 96.0];
mathDisplayBottom.textColor = [UIColor whiteColor];
mathDisplayBottom.backgroundColor = [UIColor clearColor];
[self.view addSubview: mathDisplayBottom];
//make top label
mathDisplayTop = [[UILabel alloc] initWithFrame:CGRectMake(55, 120, 242, 92)];
mathDisplayTop.font = [UIFont fontWithName:@"Helvetica" size: 96.0];
mathDisplayTop.textColor = [UIColor whiteColor];
mathDisplayTop.backgroundColor = [UIColor clearColor];
[self.view addSubview: mathDisplayTop];
//rotate top label
mathDisplayTop.transform = CGAffineTransformMakeRotation(180.0 /180.0 * M_PI);
}
//if ran before just update the text
mathDisplayBottom.text = [mathProblems objectAtIndex:problemSelector];
mathDisplayTop.text = [mathProblems objectAtIndex:problemSelector];
ranBefore = YES; //if its here. its been ran.
//run timer wait for (3) then loop again until userTaps = YES
[self performSelector:@selector(simpleMath) withObject:nil afterDelay:3.0f];
[mathProblems release];
[mathAnswers release];
[mathDisplayBottom release];
[mathDisplayTop release];
}
Таким образом, цель иметь математическую задачу отображается в течение 5 секунд, и если ответ на проблемы 6 пользователь должен нажать на кнопку в то время? – theMikeSwan
К сожалению, я сделал ошибку. Я ошибся. Не хочу, чтобы она остановилась, когда она равна 6. Она должна просто ждать 5 секунд, а затем снова петля, как и все остальные. – user377419
Не спите и не петляйте. Переместите массив проблем и текущий индекс на ivars в контроллере. Когда пользователь нажимает кнопку, проверьте, является ли текущий индекс действительным индексом (в этом случае только 2 является действительным) и выполняйте любую доброту, которую вы делаете. Наконец, запустите таймер на 5 секунд, который продвигает индекс (или просто захватывает некоторый случайный индекс, как у вас есть), и отображает обновления. –