TIL
🌱 난 오늘 무엇을 공부했을까?
📌 Escaping Closure
- 함수의 매개변수로 받은 클로저를 함수 밖에서도 호출이 가능하도록 사용하는 방법
- 주로 비동기 호출에서 사용한다.
- 기본적으로 함수의 매개변수로 들어오는 클로저는 함수 안에서만 사용할 수 있다.
- 비동기로 클로저를 실행할 때 큐는 클로저를 메모리에 보관하고 나중에 사용
import Foundation
var escapingClosure: (String) -> Void = {_ in }
func excute(text: String, escapingClosuer: @escaping (String) -> Void, nonEscapingClosure: (String) -> Void) {
DispatchQueue.global().async {
escapingClosure(text)
}
}
excute(text: "출력") { String in
print(String)
} nonEscapingClosuer: { String in
print(String)
}
sleep(10)
- Escaping Closure를 사용하는 이유
- 함수내부에서 비동기처리를 하면 호출되는 시점이 언제인지 모르기 때문에
(함수의 호출이 끝나고 클로저가 호출이 될 수 있기 때문에)
탈출 클로저를 사용해서 함수의 호출이 끝나도 클로저의 호출이 가능하도록 하기 위해서 사용하는거 같다.