2016-09-27 7 views
0

작성자가 업데이트하지 않은 라이브러리의 일부인이 함수를 작성하지 않았습니다. 누군가가 신속하게 3.0으로 기능을 전환하는 방법에 대한 조언을 주실 수 있습니까? 스위프트의swift 3.0 구문을 재구성하는 함수

func debounce(delay:TimeInterval, queue:DispatchQueue, action: @escaping (()->())) ->()->() { 
     lastFireTime = dispatch_time(DISPATCH_TIME_NOW,0) 
     dispatch_after(dispatch_time(DISPATCH_TIME_NOW,dispatchDelay),queue) { 
     let now = dispatch_time(DISPATCH_TIME_NOW,0) 
     let when = dispatch_time(lastFireTime, dispatchDelay) 
     if now >= when { 
     action() 
     } 
     } 

    } 
} 
+0

메서드에서 개체 유형이 작동하면 제거하십시오. http://stackoverflow.com/a/39526497/3463712를 참조하십시오. – Max

답변

0

C의 API

dispatch_time_t 
    dispatch_time(dispatch_time_t base, int64_t offset); 

void 
    dispatch_after(dispatch_time_t when, dispatch_queue_t queue, 
     void (^block)(void)); 

는, 같은 기능이 좋은 객체 지향 프레임 워크는 C의 API 위에 구축이다 파견 프레임 워크 (수입 파견)를 통해 사용할 수 있습니다. 놀이터에서 다음 발췌 문장을 시도한 다음 자세한 내용은 현재 Apple documentation을 확인하십시오. 초보자를위한

import PlaygroundSupport 
PlaygroundPage.current.needsIndefiniteExecution = true 

import Foundation 
import Dispatch 

let queue = DispatchQueue(label: "my queue") 

// call the block asynchronously after some time 
print(1, "now is", Date()) 

queue.asyncAfter(deadline: .now() + .seconds(5)) { 
    print() 
    print(3, "now is", Date()) 
    PlaygroundPage.current.finishExecution() 
} 

print(2, "now is", Date()) 

좋은 출발점은 당신이 매우 압축 된 형태로 많은 정보 A quick look at Grand Central Dispatch and Swift 3을 읽으십시오 here

입니다.