https://developer.apple.com/documentation/dispatch/dispatchsourcetimer
프로토콜이지만 직접 채택해서 준수하지 않아야한다.
대신, makeTimerSource(flags:queue:) 을 사용해서 이 프로토콜을 채택한 객체를 얻어야한다.
DispatchSource.makeTimerSource()
let timer = DispatchSourceTimer!
...
**...
// timer 는 속성으로 저장되어야함**
**timer = DispatchSource.makeTimerSource()**
timer.schedule(deadline: .now(), repeating: 1)
timer.setEventHandler(handler: repeatingExecution)timer = DispatchSource.makeTimerSource(queue: .main)
timer.resume()
let queue = DispatchQueue.main
let cancellable = queue.schedule(
after: queue.now,
interval: .seconds(1)
) {
print(Timer.now)
}
[iOS - swift] 2. Timer 구현하기 - DispatchSourceTimer로 구현 방법 (Background에서도 동작)
schedule(after:interval:tolerance:options:_:) | Apple Developer Documentation