Какой самый быстрый я должен запустить NSTimer? - PullRequest
2 голосов
/ 27 ноября 2010

Как быстро я могу запустить NSTimer и при этом получить надежные результаты? Я читал, что по прошествии 30 мс он НАЧИНАЕТ стать бесполезным, так где же он "начинает становиться бесполезным" ... 40 мс? 50мс

Ответы [ 3 ]

4 голосов
/ 27 ноября 2010

Скажите Документы :

Эффективное разрешение временного интервала для таймера ограничено порядка 50-100 миллисекунд

Похоже, если вы хотите быть в безопасности, вы не должны использовать таймеры ниже 0,1 сек.Но почему бы не попробовать это в своем собственном приложении и посмотреть, как низко вы можете пойти?

Вы не найдете гарантии на это.NSTimers по своей природе оппортунистичны, так как они работают с циклом событий, и их эффективная тончайшая детализация будет зависеть от всего, что происходит в вашем приложении, в дополнение к ограничениям любых механизмов диспетчеризации таймера Cocoa.

2 голосов
/ 27 ноября 2010

Какое у вас определение надежного? Ошибка 16 мсек в 1-секундном таймере составляет менее 2% ошибки, но в 30 мсек. Ошибка превышает 50%.

NSTimers будет ожидать завершения происходящего в текущем цикле выполнения, и любые ошибки во времени могут накапливаться. например если вы дотронетесь до дисплея N раз, все последующие повторные срабатывания NSTimer могут опоздать на совокупное время, затрачиваемое от 0 до N обработчиков касания (плюс все остальное, что выполнялось в «неправильное» время). и т.д.

Таймеры CADisplayLink будут пытаться квантовать время с частотой кадров, предполагая, что ни один из задач на переднем плане не занимает столько времени, сколько время кадра.

1 голос
/ 27 ноября 2010

Зависит от того, каких результатов вы пытаетесь достичь.NSTimer Class 0.5 - 1.0 - хорошее место для получения надежных результатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...