Swift

[Swift] Completion, Closure Excaping

사과농사 2021. 3. 25. 05:05

Completion

Completion, CompletionHandling, CompletionBlock로 된 파라미터 이름을 iOS를 하면 많이 접합니다.

이러한 파라미터 들은 Closure를 파라미터로 받으며 함수가 반한된 후 (끝나고) Closure를 실행 시킵니다. 

 

Closure Escaping

추가적으로 Completion을 쓸 때 Escaping을 쓰기도 합니다.

 

Closure 타입 앞에 @escaping 이라고 적으면 됩니다.

함수가 반환된 후 실행되는 Closure. 함수의 Scope를 벗어나 외부에서 사용 가능합니다. 

(ex: 함수 내부에서 만들어진 Closure를 함수 외부에 따로 만든 배열에 넣고 추후 함수 외부에서 배열을 사용해서 함수 내부에서 만든 Closure를 사용 가능.) 

+ Closure에 capture된 값은 나가서도 쓸 수 있습니다.

 

그러기 때문에 함수 외부의 Scope로 빼낼 때도 사용 합니다. 탈출이라는게 Scope외부로 간다고 생각하면 쉽습니다.