원하는 타이밍에 비동기 처리를 할 수 있게 해준다.

이게 무슨 말일까??
각설하고 바로 예제를 보자.
1. Completion Handler 예제
모든 method에 completion 인자를 추가해주면, completion Handler를 사용하는 인자로 바꿀 수 있다.
func A(completion: () -> ()) {
	...10초 걸리는 작업..
	completion()
	...10초 걸리는 작업..
}
func B() -> () {
	...5초 걸리는 작업..
}
//Completion Handler
A(completion: B) // -> A가 호출되고 10초 뒤, B가 비동기로 실행된다.그림으로 표현하자면 다음과 같다.

A 함수 내부에 completion()을 적어둔 시점에서 B가 호출되며, A의 나머지 작업과 함께 B의 작업이 진행된다.
2. Escaping Closure
위의 예제의 경우는 A의 작업이 끝나기 전에 B의 작업이 먼저 끝난다.
이런 경우 B가 끝나도 A는 작업이 끝나지 않으므로 이때의 B를 Non-Escaping Closure라고 한다.

만약 B의 작업 시간이 5초가 아닌 15초라고 가정하자.
이런 경우, A가 끝나도 B가 작업을 진행하고 있게 되므로 이 때의 B를 Escaping Closure이라 한다.
escaping closure가 될 수도 있는 경우 반드시 아래와 같이 @Escaping closure임을 명시해주어야 한다.
//다음과 같이 @escaping을 달아주어야 한다.
func A(completion: @escaping () -> ()) {
	...
}'🍎 Apple > Swift' 카테고리의 다른 글
| dequeueReusableCell과 dequeueConfiguredReusableCell, 뭐가 다를까? (0) | 2023.10.26 | 
|---|---|
| [Swift] defer, 내부 코드를 매우 간단하게 만들고 싶을 때! (0) | 2023.10.24 | 
| [Swift] Opaque Type: Some을 붙여 타입캐스팅할 필요없이 구체 타입으로 사용하자. (0) | 2023.10.24 | 
| [Swift] Trailing Closure란? (1) | 2023.10.22 | 
| [Swift] 프로퍼티 래퍼(Property Wrapper), 대체 어떻게 쓰는거지?? (0) | 2023.10.22 | 
원하는 타이밍에 비동기 처리를 할 수 있게 해준다.

이게 무슨 말일까??
각설하고 바로 예제를 보자.
1. Completion Handler 예제
모든 method에 completion 인자를 추가해주면, completion Handler를 사용하는 인자로 바꿀 수 있다.
func A(completion: () -> ()) {
	...10초 걸리는 작업..
	completion()
	...10초 걸리는 작업..
}
func B() -> () {
	...5초 걸리는 작업..
}
//Completion Handler
A(completion: B) // -> A가 호출되고 10초 뒤, B가 비동기로 실행된다.그림으로 표현하자면 다음과 같다.

A 함수 내부에 completion()을 적어둔 시점에서 B가 호출되며, A의 나머지 작업과 함께 B의 작업이 진행된다.
2. Escaping Closure
위의 예제의 경우는 A의 작업이 끝나기 전에 B의 작업이 먼저 끝난다.
이런 경우 B가 끝나도 A는 작업이 끝나지 않으므로 이때의 B를 Non-Escaping Closure라고 한다.

만약 B의 작업 시간이 5초가 아닌 15초라고 가정하자.
이런 경우, A가 끝나도 B가 작업을 진행하고 있게 되므로 이 때의 B를 Escaping Closure이라 한다.
escaping closure가 될 수도 있는 경우 반드시 아래와 같이 @Escaping closure임을 명시해주어야 한다.
//다음과 같이 @escaping을 달아주어야 한다.
func A(completion: @escaping () -> ()) {
	...
}'🍎 Apple > Swift' 카테고리의 다른 글
| dequeueReusableCell과 dequeueConfiguredReusableCell, 뭐가 다를까? (0) | 2023.10.26 | 
|---|---|
| [Swift] defer, 내부 코드를 매우 간단하게 만들고 싶을 때! (0) | 2023.10.24 | 
| [Swift] Opaque Type: Some을 붙여 타입캐스팅할 필요없이 구체 타입으로 사용하자. (0) | 2023.10.24 | 
| [Swift] Trailing Closure란? (1) | 2023.10.22 | 
| [Swift] 프로퍼티 래퍼(Property Wrapper), 대체 어떻게 쓰는거지?? (0) | 2023.10.22 | 
