본문 바로가기
공부/스위프트

[스위프트] defer(디퍼)

by 초코팅촉 2023. 7. 10.
728x90

스위프트에는 defer라는 구문이 있다.
앞서 얘기한 흐름 제어 구문중 하나인데 스위프트에 있는 특이한 기능중 하나이다.
defer는 "연기하다"라는 뜻을 가진 단어로 이를 생각해보면 defer구문의 기능이 무엇일지 예상이 될 것이다.

바로 일부 기능을 지연시키고자 할때 쓰는 구문이다. 하지만 이는 몇초를 지정한다던가 이런게 아니다.
defer는 if나 for처럼 블럭으로 작성한다.
defer는 다음과 같은 특징들을 갖는다.
• defer 블럭은 defer가 들어가있는 블럭에서 가장 마지막에 실행된다.(return 이후에 실행된다.)
• 만약 defer블럭을 지나지 않고 return이 실행되면 defer는 실행되지 않는다.
• defer블럭이 여러개가 있다면 마지막 defer블럭부터 거꾸로 실행된다.
• defer블럭이 중첩되있다면 가장 안의 defer블럭부터 안에서 밖의 순서로 실행된다.
이제 실제 예시를 보자.

예시

func abc() {
    defer {
        print("deferred")
    }

    return
}

abc()    // deferred 출력.

//return보다 아래 있을 경우
func def() {
    return

    defer {
        print("deferred")
    }
}

def()    // defer 블럭은 실행되지 않는다.




스위프트 문법 - defer, swift