-
[Swift] defer는 무엇인가 🤔Swift 2023. 10. 3. 18:25
defer란
후처리인 defer는 작성된 구문은 위치와 상관 없이 코드블럭을 나가기전에 반드시 실행된다. 에러가 나거나 정상적으로 작동되거나 무조건 실행된다. 함수가 종료되기 전 메모리에서 해제하는 등의 기능으로 사용할 수 있다.
func sayHello(name: String){ defer { print(name) } print("hello") } sayHello("moonkey") /* hello moonkey */
defer 동작 순서
defer는 Stack으로 동작하기 때문에 defer가 여러개 입력된 경우 가장 먼저 작성된 코드가 가장 나중에 실행된다.
func printNums(){ defer { print(1) } defer { print(2) } defer { print(3) } } /* 3 2 1 */
defer가 호출되지 않는 경우
defer가 선언되기 전에 구문이 죽어버린다면 Stack에 추가되지 못하기 때문에 불리지 않는다. defer가 선언되기 전에 return, error가 발생하면 구문이 끝나게 된다.
func sayHello(name: String) throws -> Void { defer { print(name) } enum ErrorSample { case error } throw ErrorSample.error defer { print("hello") } } sayHello("moonkey") /* moonkey */
'Swift' 카테고리의 다른 글
SwiftUI에서 화면 캡쳐하기(with UIKit / UIGraphicsImageRenderer) (0) 2023.10.11 [Swift] Codable 개념 확실히 이해하기 💬 (0) 2023.10.06 [Swift] \. 는 무엇인가 (KeyPath 정리) (0) 2023.03.23 [SwiftUI] @State와 @ObservableObject 알아보기 (0) 2023.03.21 [Network] URL로 네트워크 요청하기 (0) 2023.03.12