Вы, конечно, можете избежать поворотов: ДА:
//set up main loop
[NSTimer scheduledTimerWithTimeInterval:0.033
target:self selector:@selector(gameLoop:) userInfo:nil repeats:YES];
На самом деле, вам было бы лучше так, потому что синхронизация была бы более последовательной - код, который вы перечислили здесь, запускает новый таймер только после того, как вычислен кадр, что даст вам неправильные кадры, если эти вызовы будут варьироваться количество времени.