2016-11-17 1 views
1

스위프트 3에서는 GCD의 구문이 상당히 바뀌 었습니다.DispatchQueue.main.asyncAfter (마감 : .now() + 5.0)는 Swift 3에서 어떻게 작동합니까?

호출 dispatch_after하는()는 현재 다음과 같습니다 :이 호출 후

DispatchQueue.main.asyncAfter(deadline: .now() + 5.0) {//do something} 

그 코드 블록을 5 초 호출 할 것이다.

어떻게 작동합니까? docs는 데드 라인 매개 변수가 dispatch_time_t이며 이는 UInt64의 유형입니다. 나노초 단위의 시간이라고 가정합니다. 그러나 .now() + delay 구문은 10 진수 초를 값에 추가합니다. DispatchTime.now()는 UInt64를 반환하지 않습니까? 그렇다면 10 진수 초를 추가하면 작동하지 않습니다. 무엇이든간에, 나는 .now()에 추가 된 값이 나노초로 취급되기를 기대하며 이는별로 유용하지 않을 것입니다.

:

나는이 스레드에서 내 자신의 질문에 대한 답을 발견

답변

0

확인을 (. 빠른 2에서는 초당 나노초의 수에 대한 상수 값을 곱해야하는 데 사용) How do I write dispatch_after GCD in Swift 3?

이 명백하게 DispatchTime 더블 걸리는 + 연산자의 재정의가, 소수 초와 같은 이중 취급하고, 그 결과 DispatchTime을 반환합니다.

+0

Xcode에서 '+'를 command- 클릭하면 선언을 볼 수 있습니다. –

+0

@ MartinR, 제안에 감사드립니다. 그것을하기 위해서, 그것을 수행하는'+'연산자의 오버라이드라는 것이 나에게 발생했을 것입니다. –

+0

응용 프로그램 개발자가 사용하는 가장 일반적인 형식 일 수 있으므로 지연 시간 값을 사용하는이 호출 형식이 현재 마하 시간에 비례하지 않아야하는 것처럼 보입니다. 아주 간단한 확장이지만, 내장되어 있어야합니다. –

관련 문제