DispatchQueue.main.asyncAfter

DispatchQueue.main.asyncAfter(deadline: .now() + 5.0) {
	print("5초 뒤에 실행")
}

시간 차를 두고 실행하려고 했던 코드를 취소 하고 싶을 때

DispatchQueue.main.asyncAfter는 파라미터로 DispatchWorkItem을 받을 수 있습니다.

DispatchWorkItem은 dispatch queue 또는 dispatch group 수행할 작업을 캡슐화 할 수 있고, work item을 DispatchSource의 이벤트, 등록, 취소 핸들러로 사용 할 수 있습니다.

아래 코드와 같이 DispatchWorkItem에 있는 cancel()을 실행하면 타이머가 취소 됩니다.

let timerExcute = DispatchWorkItem(block: { print("실행") } )

DispatchQueue.main.asyncAfter(deadline: .now() + 5.0, execute: timerExcute)

timerExcute.cancel() // 취소가 되서 실행 되지 않습니다.

시간 차를 두고 코드를 실행하고 싶을 때. - 추가 질문