высокоточный таймер в Swift

Что было бы лучшим решением в Swift для точных часов для управления внешним оборудованием? Мне нужно написать функцию цикла, которая будет срабатывать с заданной скоростью в секунду (сотни или тысячи Гц) надежно и с высокой точностью.

One Solution collect form web for “высокоточный таймер в Swift”

Вы можете определить свойство таймера GCD (потому что, в отличие от NSTimer / Timer , вы должны поддерживать свою собственную сильную ссылку на таймер GCD):

 var timer: DispatchSourceTimer! 

И затем создайте таймер (возможно, это .strict который не .strict , приложению и т. Д., С осознанием влияния мощности / батареи / и т. Д.), С помощью makeTimerSource(flags:queue:) :

 let queue = DispatchQueue(label: "com.domain.app.timer", qos: .userInteractive) timer = DispatchSource.makeTimerSource(flags: .strict, queue: queue) timer.scheduleRepeating(deadline: .now(), interval: 0.0001, leeway: .nanoseconds(0)) timer.setEventHandler { // do something } timer.resume() 

Обратите внимание, что вы должны грамотно обрабатывать ситуации, когда таймер не может справиться с точностью, которую вы ищете. Как говорится в документации :

Обратите внимание, что для всех таймеров требуется ожидать некоторую задержку, даже если задано значение ограничения нулевого значения.

PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.