가장 좋은 방법은 여러 번 액세스 할 수있는 재사용 가능한 기능을 정의하는 것입니다.
재사용 가능한 기능 :
예를 들어 전역 함수로서 AppDelegate.swift와 같은 곳.
func backgroundThread(_ delay: Double = 0.0, background: (() -> Void)? = nil, completion: (() -> Void)? = nil) {
dispatch_async(dispatch_get_global_queue(Int(QOS_CLASS_USER_INITIATED.value), 0)) {
background?()
let popTime = dispatch_time(DISPATCH_TIME_NOW, Int64(delay * Double(NSEC_PER_SEC)))
dispatch_after(popTime, dispatch_get_main_queue()) {
completion?()
}
}
}
참고 : 스위프트 2.0, 대체 QOS_CLASS_USER_INITIATED.value을 하여 전술 QOS_CLASS_USER_INITIATED.rawValue 대신
용법:
A. 백그라운드에서 3 초 지연된 프로세스를 실행하려면
backgroundThread(3.0, background: {
// Your background function here
})
B. 백그라운드에서 프로세스를 실행하려면 포 그라운드에서 완료를 실행하십시오.
backgroundThread(background: {
// Your function here to run in the background
},
completion: {
// A function to run in the foreground when the background thread is complete
})
C. 3 초 지연-백그라운드 매개 변수없이 완료 매개 변수 사용에 유의하십시오.
backgroundThread(3.0, completion: {
// Your delayed function here to be run in the foreground
})