Как лучше всего справиться с этой ситуацией на устройстве iPhone: моя программа изменяет высоту звука между двумя значениями. Нажатие кнопки вызывает метод с циклом while, который выполняет линейное изменение с небольшими приращениями. Это займет некоторое время, чтобы закончить. Тем временем пользователь нажал другую кнопку, вызвав тот же метод. Теперь я хочу, чтобы цикл в первом вызове был остановлен, а во втором - начался с текущего состояния. Вот как должен выглядеть метод:
-(void)changePitchSample: (float) newPitch{
float oldPitch=channel.pitch;
if (oldPitch>newPitch) {
while (channel.pitch>newPitch) {
channel.pitch = channel.pitch-0.001;
}
}
else if (oldPitch<newPitch) {
while (channel.pitch<newPitch) {
channel.pitch = channel.pitch+0.001;
}
}
}
Теперь, как лучше всего справиться с ситуацией, когда метод вызывается снова? Нужна ли мне какая-то многопоточность? Мне не нужны два процесса, идущие одновременно, поэтому, похоже, должно быть какое-то более простое решение, которое я не могу найти (будучи новичком в этом языке).
Любая помощь с благодарностью!