At first I used NSTimer and ran into the problem of the frame rate being stuck at 40 frames per second. I\'ve read about using CADisplayLink to fix the problem. It seemed to w
Have you checked to see whether you're actually dropping frames? Are you using the CPU/GPU to the extent that you can only draw 40 frames in a second, or is the problem somewhere in the software?
Remember that if a CADisplayLink
is unable to fire for a screen refresh (due to the main thread being busy doing things like drawing the previous frame) then it may skip it, as it won't have enough time to complete. So if some of your frames take more than 0.01666... seconds to draw, you'll miss the interval to draw the frames right after, and the slowdown may appear worse than it is.
Also remember that a mobile device is not always capable of drawing everything quickly. The A4 processor in an iPhone 4 is very good, but it's still a tall order to fill 960x640 screen pixels 60 times a second. The vast majority of your users will not notice if your frame rate is 40fps instead of 60fps--the human eye doesn't generally notice judder or screen lag until you're around 20fps and lower.