티스토리 뷰

macOS, iOS

@escaping , a.k.a. 탈출 클로저

SweetDev 2019. 12. 5. 17:09

클로저에 대해서는 잘 알고 있다.

그럼 탈출 클로저는 무엇일까?

 

아무도 몰랐겠지만, @noescape을 명시적으로 써주지 않았어도, 디폴트 설정은 @noescape였다. 

 

함수의 인자로 쓰이는 클로저는, 여느 함수 인자들처럼 함수 안에서만 접근이 가능했다. 

 

하지만 @escaping을 써주게 된다면?!?!!? 함수의 외부에서도 클로저에 대해 접근할 수 있어진다. 

 

var completionHandlers: [()->Void] = []

func someFunction(closure: @escaping ()-> Void ) {

   completionHandlers.append(closure)

}

 

결론: escaping 클로저는 변수로 받은 클로저를 다른 변수에 저장해놓고, 나중에 콜 할 수 있다는 점에서 의의가 있다. 

 

@escaping은 (당연히) 함수 타입에만 쓸 수 있다. 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함