Если бы я перефразировал ваш вопрос, я бы сказал так. У меня есть набор стен, каждая стена должна иметь скорость в зависимости от сложности. В данный момент положение каждой стены необходимо обновлять в зависимости от ее скорости.
Как правило, вы не хотели бы изменять время, в которое происходит это обновление, поскольку движение может выглядеть прерывистым, подумайте, частота кадров. Если вы посмотрите книгу «Изучите разработку игр для iPhone и iPad cocos2d», то Штеффен Иттерхайм даже посоветует вам всегда предполагать постоянную частоту кадров. Аргумент заключается в том, что во время обычной игры вам действительно нужна постоянная частота кадров. В случаях, когда частота кадров может упасть (например, при входящем письме, и iPhone должен выполнить дополнительную обработку), вы не хотите, чтобы какое-либо движение прыгало слишком далеко. При этом было бы лучше, чтобы в течение этого короткого промежутка времени все двигалось медленно, а затем возобновлялось, где пользователь находился до срыва.
Таким образом, вместо изменения интервала вашего NSTimer, может быть лучше изменить пройденное расстояние. Установите переменную, которая содержит скорость стены (с). Установите таймер с нормальным значением (1/60 - хороший выбор). Затем в вашем обратном вызове из вашего таймера обновите положение стен (ы) в зависимости от скорости.
Конечно, это просто если вы запускаете свой собственный игровой движок. Если вы используете cocos2d, то вам действительно следует использовать планировщик CCDirector, так как использование собственного NSTimer вызовет проблемы, когда директор будет приостановлен / возобновлен и т. Д. И если вы не используете cocos2d, я бы порекомендовал изучить его, так как это заботится о таких вещах для вас.