Да, вы можете иметь временные интервалы менее 0,02 секунды. Например, интервал 0,01 секунды легко достигается. Но через 0,001 или 0,0001 секунды вы начинаете ограничиваться практическими соображениями о том, как много вы могли бы достичь sh за этот период времени.
Но если ваша цель состоит в том, чтобы представить что-то в пользовательском интерфейсе, редко есть какая-либо точка для превышения максимальных кадров устройства в секунду (обычно 60 кадров в секунду). Если экран можно обновлять только каждые 60 секунд, какой смысл вычислять чаще, чем этот? Это просто потраченные впустую циклы процессора. Кстати, если бы мы пытались достичь оптимальной скорости обновления экрана sh, мы бы использовали CADisplayLink
, а не Timer
. Он работает так же, как таймер, но оптимально рассчитан на обновление экрана с оптимальной скоростью.
Несмотря на то, что стоит, идея обновления milliseconds
для захвата истекшего времени немного не запускается. Мы никогда не обновляем «счетчик прошедшего времени», как это, потому что даже в лучшем случае ios частота не гарантируется. (И из-за ограничений в двоичных представлениях дробных десятичных значений, мы также редко хотим добавлять значения с плавающей запятой, подобные этой.)
Вместо этого, если мы хотим иметь максимально быстрые обновления в нашем пользовательском интерфейсе, мы бы сохранили время начала, запустили CADisplayLink
и каждый раз, когда вызывался обработчик таймера, вычисляли истекшее время как разницу между текущим временем и временем начала.
Теперь, если вам действительно нужно очень точный таймер, это можно сделать, но вы должны увидеть Техническое примечание TN2169 , в котором показано, как создать высокоточный таймер. Но это скорее крайний случай.