https://developer.apple.com/documentation/dispatch/dispatchsourcetimer

프로토콜이지만 직접 채택해서 준수하지 않아야한다.

대신, makeTimerSource(flags:queue:) 을 사용해서 이 프로토콜을 채택한 객체를 얻어야한다.

DispatchSource.makeTimerSource()

사용 코드


UIKit

let timer = DispatchSourceTimer!
...
**...
// timer 는 속성으로 저장되어야함**
**timer = DispatchSource.makeTimerSource()**

timer.schedule(deadline: .now(), repeating: 1)

timer.setEventHandler(handler: repeatingExecution)timer = DispatchSource.makeTimerSource(queue: .main)

timer.resume()

Combine

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