작성
·
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을 사용하면 그 클로저의 나머지 코드가 실행되지 않고 종료됩니다.dataTask
의 호출 자체가 종료되지는 않습니다.completion(nil)
이 클로저 마지막에 있다면, 클로저 내에서 return 전에 명시적으로 작성되었다면 그 completion(nil)
은 실행됩니다.해당 개념을 더 잘 이해하는 데 도움이 될 수 있는 유사한 질문과 답변들이 있습니다:
제가 드린 요약과 링크된 자료가 도움이 되기를 바랍니다. 클로저와 비동기 작업의 동작은 초보 개발자에게 혼란스러울 수 있으니, 이를 이해하려는 노력은 더 나은 코드를 작성하는 데 큰 도움이 됩니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.