[Swift] Completion Handler(ft. Escaping Closure)

2023. 10. 22. 20:07· 🍎 Apple/Swift
목차
  1. 1. Completion Handler 예제
  2. 2. Escaping Closure

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

 

이게 무슨 말일까??

 

각설하고 바로 예제를 보자.

 

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. 1. Completion Handler 예제
  2. 2. Escaping Closure
'🍎 Apple/Swift' 카테고리의 다른 글
  • [Swift] defer, 내부 코드를 매우 간단하게 만들고 싶을 때!
  • [Swift] Opaque Type: Some을 붙여 타입캐스팅할 필요없이 구체 타입으로 사용하자.
  • [Swift] Trailing Closure란?
  • [Swift] 프로퍼티 래퍼(Property Wrapper), 대체 어떻게 쓰는거지??
PushedGun
PushedGun
App Developer
내 머리에 push 중..App Developer
PushedGun
내 머리에 push 중..
PushedGun
전체
오늘
어제
  • 분류 전체보기 (27)
    • 🍎 Apple (21)
      • Swift (9)
      • iOS (12)
    • 💻 CS (2)
      • Git (2)
    • 🤿 딥다이브 (1)
    • 🤔 후기 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • prefixMatch
  • wholeMatch
  • Xcode
  • git
  • swiftformat
  • trailing closure
  • convenience init
  • dequeueConfiguredReusableCell
  • name capture
  • dequeueReusableCell
  • UIKit
  • Encode
  • 네이버부스트캠프 멤버십
  • designated init
  • decode
  • push -f
  • IOS
  • 의존성 제거
  • SWIFT
  • No Swift version was specified

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
PushedGun
[Swift] Completion Handler(ft. Escaping Closure)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.