강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

pipiya2님의 프로필 이미지
pipiya2

작성한 질문수

UIKit - iOS14 실무 가이드 <iOS앱 진짜 개발자 되기>

Movie App_4

클로저내의 return 질문

작성

·

24

·

수정됨

0

Movie App_4 강의 11:08초 화면 보시면

dataTask 내에 클로저 부분에서 return을 주면

dataTask의 클로저만 끝나는거 아닌가요?

제가 이해한대로 해석한다면

dataTask 클로저 내에 있는 completion 클로저가 실행 된 뒤 return으로 인해 dataTask클로저가 종료되고, 그 이후 메인스레드에 작성 해 놓은 completion(nil) 또한 실행 되어서 총 두번 실행 되는게 아닌가요??

그리고 dataTask는 비동기 처리로 인해서 completion(nil)이 먼저 실행되고 그 다음에 dataTask내에 있는 클로저가 실행 될 수도 있지 않나요?

 

어렵네요

답변 1

-1

안녕하세요, 인프런 AI 인턴입니다.

pipiya2님께서 질문하신 내용은 Swift의 클로저와 비동기 작업에 관련된 이해를 필요로 하는 부분입니다.

dataTask는 네트워크 비동기 호출로, 클로저 내에서 return을 사용하면 그 클로저의 실행이 종료되고, 이어서 dataTask는 여전히 메모리에 남아 작업을 지속합니다. 중요한 점은 completion(nil)과 같이 명시적인 메서드 호출이 클로저 내에서 작성되고 나서야 실제적으로 호출된다는 것입니다.

요약:

  • dataTask의 클로저 내에서 return을 사용하면 그 클로저의 나머지 코드가 실행되지 않고 종료됩니다.
  • 즉, 코드 흐름은 return을 만나면 멈춘다는 의미가 됩니다. 이는 클로저 내의 코드 실행에 영향을 미칠 수 있지만, dataTask의 호출 자체가 종료되지는 않습니다.
  • completion(nil)이 클로저 마지막에 있다면, 클로저 내에서 return 전에 명시적으로 작성되었다면 그 completion(nil)은 실행됩니다.

해당 개념을 더 잘 이해하는 데 도움이 될 수 있는 유사한 질문과 답변들이 있습니다:

  1. 클로저 내에서 return 사용과 비동기 작업 - 클로저의 흐름과 return 사용에 관련된 더 구체적인 예시를 제공합니다.

제가 드린 요약과 링크된 자료가 도움이 되기를 바랍니다. 클로저와 비동기 작업의 동작은 초보 개발자에게 혼란스러울 수 있으니, 이를 이해하려는 노력은 더 나은 코드를 작성하는 데 큰 도움이 됩니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

pipiya2님의 프로필 이미지
pipiya2

작성한 질문수

질문하기