Цикл до достижения условия, iPhone

У меня тут проблема...

После нажатия кнопки я хочу, чтобы цикл выполнялся до тех пор, пока не будет достигнуто условие:

- (IBAction)buttonclick1 ...

if ((value2ForIf - valueForIf) >= 3) { ...

Я хотел бы, чтобы цикл выполнялся до тех пор, пока

((value2ForIf - valueForIf) >= 3)

а затем выполните код, связанный с оператором IF.

Я стремлюсь добиться того, чтобы программа продолжала проверять, верно ли приведенное выше утверждение, прежде чем продолжить работу с кодом. Вдобавок к этому под IF есть оператор else, хотя я не знаю, повлияет ли это на цикл.

Я не уверен в требуемом здесь формате цикла, и все, что я пробовал, вызывало ошибки. Любая помощь будет принята с благодарностью.

Стью


person Stumf    schedule 16.11.2009    source источник


Ответы (3)


Вместо того, чтобы запускать замкнутый цикл, который заблокировал бы выполнение вашего приложения, если оно не будет запущено в другом потоке, вы можете использовать NSTimer для вызова метода через выбранный вами интервал времени и проверки условия в этом методе. Если условие выполнено, вы можете отменить таймер и продолжить.

person Jasarien    schedule 16.11.2009

Из того, что вы сказали, вам нужен цикл while

while( (value2ForIf - valueForIf) < 3 ) { ...Code Here... }

Это будет запускать код в фигурных скобках, пока разница в значениях меньше 3, то есть он будет работать до тех пор, пока их разница не станет 3 или больше. Но, как сказал Джасариен. Это плохая идея, так как вы будете блокировать свою программу. Если значения обновляются самим кодом, это нормально. Но если они обновляются каким-либо пользовательским интерфейсом пользователя, ваш цикл while заблокирует пользовательский интерфейс и не позволит пользователю вводить что-либо.

person Brandon Bodnar    schedule 16.11.2009
comment
Использование цикла while вызывает ошибку в моем операторе else (синтаксическая ошибка перед else). Как мне обойти это? - person Stumf; 17.11.2009
comment
Думаю, я понял, использовал ЕСЛИ. Я ищу код для запуска, пока разница составляет от ›= до 3. Код должен проверять значения до тех пор, пока это не произойдет, а затем продолжить. Будет ли работать использование while( (value2ForIf - valueForIf) ›= 3 ) {...? - person Stumf; 17.11.2009
comment
Приложение ничего не делает, когда два значения отличаются друг от друга на 3, а затем продолжает аварийно завершать работу, если вы решите снова нажать кнопку. Любые идеи? - person Stumf; 17.11.2009

person    schedule
comment
Спасибо за подробный ответ. Не могли бы вы помочь мне в дальнейшем... как мне объявить progView и buttonAction? - person Stumf; 17.11.2009
comment
progView — это представление прогресса, которое вы создаете самостоятельно либо в InterfaceBuider, либо в коде в подклассе UIView. buttonAction объявляется так, как я написал, просто скопируйте-вставьте код, и в файле .h добавьте эту строку: - (void)buttonAction: (NSTimer *) timer; - person luvieere; 17.11.2009
comment
Теперь все работает, именно то, что я искал ... и кое-что! Большое спасибо luviere. - person Stumf; 19.11.2009