Я использую OpenGL ES 1.1 и CADisplayLink для анимации 3D-сцены. Если устройство iOS было перезагружено относительно недавно, анимация будет плавной, а разница во времени между двумя вызовами displayLink.timestamp будет достаточно равномерной. Но после нескольких часов или дней использования устройства iOS, когда мое приложение иногда запускается несколько раз, анимация становится прерывистой, а временные дельты увеличиваются, а затем сбрасываются до более низкого значения только для того, чтобы снова увеличиваться.
Как это:
2012-09-01 23:42:58.770 [2678:707] dt= 0.021139
2012-09-01 23:42:58.787 [2678:707] dt= 0.022183
2012-09-01 23:42:58.804 [2678:707] dt= 0.023223
2012-09-01 23:42:58.820 [2678:707] dt= 0.024270
2012-09-01 23:42:58.837 [2678:707] dt= 0.009679
2012-09-01 23:42:58.853 [2678:707] dt= 0.010750
2012-09-01 23:42:58.870 [2678:707] dt= 0.011766
2012-09-01 23:42:58.887 [2678:707] dt= 0.012806
2012-09-01 23:42:58.903 [2678:707] dt= 0.013847
2012-09-01 23:42:58.920 [2678:707] dt= 0.014890
2012-09-01 23:42:58.937 [2678:707] dt= 0.015933
2012-09-01 23:42:58.953 [2678:707] dt= 0.016976
2012-09-01 23:42:58.970 [2678:707] dt= 0.018011
2012-09-01 23:42:58.987 [2678:707] dt= 0.019055
2012-09-01 23:42:59.003 [2678:707] dt= 0.020097
2012-09-01 23:42:59.020 [2678:707] dt= 0.021143
2012-09-01 23:42:59.037 [2678:707] dt= 0.022181
2012-09-01 23:42:59.054 [2678:707] dt= 0.023222
2012-09-01 23:42:59.071 [2678:707] dt= 0.024288
2012-09-01 23:42:59.087 [2678:707] dt= 0.009624
2012-09-01 23:42:59.103 [2678:707] dt= 0.010728
2012-09-01 23:42:59.121 [2678:707] dt= 0.011763
2012-09-01 23:42:59.137 [2678:707] dt= 0.012808
2012-09-01 23:42:59.153 [2678:707] dt= 0.013847
2012-09-01 23:42:59.170 [2678:707] dt= 0.014891
2012-09-01 23:42:59.187 [2678:707] dt= 0.016002
2012-09-01 23:42:59.203 [2678:707] dt= 0.016979
2012-09-01 23:42:59.220 [2678:707] dt= 0.018016
2012-09-01 23:42:59.237 [2678:707] dt= 0.019042
2012-09-01 23:42:59.253 [2678:707] dt= 0.020099
2012-09-01 23:42:59.270 [2678:707] dt= 0.021138
2012-09-01 23:42:59.287 [2678:707] dt= 0.022185
2012-09-01 23:42:59.304 [2678:707] dt= 0.023222
2012-09-01 23:42:59.320 [2678:707] dt= 0.024265
2012-09-01 23:42:59.337 [2678:707] dt= 0.009681
2012-09-01 23:42:59.354 [2678:707] dt= 0.010736
И затем, если устройство iOS перезагрузится, анимация снова станет плавной.
Проблема возникает даже на моем экране меню, когда в функции UpdateAnimation() почти не выполняются вычисления, связанные с игрой.
Я не понимаю, что происходит и почему новая перезагрузка всегда решает эту проблему на некоторое время.