티스토리 뷰

반응형

 

 

안녕하세요? iOS Developer, 멍구입니다.
오늘은 swift 문법 중 유용하게 사용될 수 있는 defer문에 대해서 함께 알아봐요. 😄

 


Defer Statement
Defer문

defer 문은 특정 코드 블럭이 종료 될때 실행할 코드를 구현하고자할 때 사용할 수 있습니다. 예를들면, 특정 메서드가 종료될 때 무언가 연산이나 실행할 작업이 있다면 해당 defer 블럭 내에 코드를 구현할 수 있습니다. 

defer문은 블럭이 종료되는 방식에 관계없이 defer로 정의된 코드가 실행되는 특징이 있습니다. 이 의미는 정의된 블럭이 종료되면 defer문이 사용되는 것을 의미합니다.

예를 들자면, 파일 처리 / 에러가 발생할 수 있는 throw 메서드의 액션 실행 등 수동 작업의 경우 또한 블럭이 종료되면 defer가 실행됩니다.

 

만약 다수의 defer문이 동일한 블럭 범위에 선언되면 어떻게 될까요? 이때 다수의 defer문이 선언될 경우, 블럭을 빠져나갔을때 선언한 defer문이 역순으로 실행이 됩니다. 즉 1번째, 2번째 defer문이 있었다면, 2 -> 1번째 순으로 defer문이 실행이 됩니다. 

맨 마지막으로 선언한 defer문이 먼저 실행되는 것은 맨 마지막 defer문이 다른 defer문들에 대해 정리 될 자원들을 참조하고 있음을 의미합니다. 

 

 


defer문 사용하기

defer문을 직접 swit 코드로 작성해서 사용해 보겠습니다. defer문의 사용 예시는 아래와 같습니다. 

위의 코드는 someFunction이라는 메서드를 정의하고 있는데요. 인자로 받은 x, y의 곱셈 결과를 반환하고 있습니다. 

특이한 점은, 메서드 내부에 1, 2번째 defer문을 정의하고 있는 것이지요. 이렇게 다수의 defer문을 블럭 내에 정의할 수도 있는데요.
9행에서 보시면 해당 메서드의 출력을 실행하고 있습니다. 그렇다면 해당 코드의 출력 결과는 어떻게 될까요?

 

 

바로 아래처럼, 메서드 블럭이 종료될 때, defer문이 실행되는데요.

여기에서 주목할 부분은 defer문이 역순으로 출력되는 것입니다. 앞서 말했듯이, defer문이 다수 선언되었다면 블럭을 빠져나간 뒤 실행되는 defer문의 순서는 역순이 되기 때문에 위와 같은 결과를 낳게 됩니다. 

 

 


위와 같이 오늘은 iOS개발 간 사용될 수 있는 swift문법, defer문에 대해 알아봤습니다. defer문은 특정 블럭이 종료되는 시점에 실행하고 싶은 코드를 미리 선언, 설정할 수 있는 장점이 있습니다. 

만약 특정 메서드 등이 종료했을때 처리할 연산이 있다면 필요에 따라 defer문을 활용하면 좋을 것 같습니다. 👨🏻‍💻
지금까지 swift 문법 팁, defer문에 대한 사용방법을 알아봤습니다. ~ 

 

 

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함