GGURUPiOS
[Swift] Defer 란? 본문
안녕하세요
이번시간에는 defer 문에 대해 알아보도록 하겠습니다.
defer 문은 무엇일까요?
defer 문은 defer문이 속해있는 범위 외부로 프로그램 제어권을 이전하기 직전에 코드를 실행
-> defer 블록 내부의 실행문은 함수가 종료되기 직전에 실행되도록 보장 (함수가 끝나기 전에 마지막으로 실행한다)
어떻게 동작?
func ex() {
defer {
print("1")
}
print("2")
}
ex()
// "2", "1" 순으로 출력 됨
2개 이상의 defer문이 있다면 어떻게 될까?
-> defer는 역순으로 실행이 됩니다 (밑의 구문 먼저)
func ex() {
defer {
print("1")
}
defer {
print("2")
}
print("3")
}
ex()
// "3", "2", "1" 순으로 출력 됨
return 값이 있는 함수에서는?
return 이 먼저된 후, defer 문이 실행됨 (컴플리션 핸들러 처럼 동작할 수 있음)
언제 쓸까?
프로그램 제어가 어떻게 되든 상관없이 defer문은 실행됩니다.
그래서 오류가 발생하더라도 반드시 실행되어야 하는 작업을 위해 defer문을 사용할 수 있습니다.
defer가 실행되지 않는 경우
throws 함수나, guard 문으로 함수가 조기에 종료되면, defer문은 실행되지 않습니다.
'Swift > 문법 파헤치기' 카테고리의 다른 글
[Swift] 접근제어(Access Control)란? (0) | 2023.12.05 |
---|---|
[Swift] Hashable 이란? Equatable을 준수해야 하는 이유 (1) | 2023.12.04 |
[Swift] 프로토콜 지향 vs 객체 지향 프로그래밍 (POP vs OOP) (1) | 2023.12.04 |
[Swift] KVO란? Key-Value 코딩과 함께 알아보자 (0) | 2023.11.09 |
[Swift] Singleton? 싱글톤에 대해 알아보기 (1) | 2023.11.07 |