ukSeung iOS

[Swift] defer 문이란? 본문

iOS/Swift

[Swift] defer 문이란?

욱승 2022. 10. 5. 17:37

안녕하세요 욱승입니다.

이번 포스팅에선 defer 블록에대해 알아보겠습니다.

 

defer 블록은 함수나 메소드에서 코드의 흐름과 상관없이 가장 마지막에 실행되는 블록입니다. 지연 블록이라고 부르기도 하는 이 블록에 작성된 구문은 작성된 위치에 상관 없이 항상 함수의 종료 직전에 실행되기 때문에, 종료 시점에 맞추어 처리해야 할 구문이 있다면 우리는 어디에작성해야 할지 고민하지 않고 defer 블록에 넣어두기만 하면 됩니다. 실제로 이 블록은 함수에서 사용된 각종 리소스의 처리나 해제, 연결 종료 등의 구문을 처리하는 용도로 유용하게 사용됩니다.

 

defer 특성

1. defer 블록은 작성된 위치와 순서에 상관없이 함수가 종료되기 직전에 실행된다.

2. defer 블록을 읽기 전에 함수의 실행이 종료될 경우 defer 블록은 실행되지 않는다.

3. 하나의 함수나 메소드 내에서 defer 블록을 여러 번 사용할 수 있다. 이때에는 가장 마지막에 작성된 defer 블록부터 역순으로 실행된다.

4. defer 블록을 중첩해서 사용할 수 있다. 이때에는 바깥쪽 defer 블록부터 실행되며 가장 안쪽에 있는 defer블록은 가장 마지막에 실행된다.

 

 

defer 예제코드

 

defer 블록을 읽기 전 return을 만나 함수의 실행이 종료가 됐으므로 defer 블록을 실행하지 않고 이후 print("3")도 실행하지 않음.

 

 

 

728x90
반응형