- This topic has 3개 답변, 2명 참여, and was last updated 2 years, 10 months 전에 by rhrnakrnakr.
3 답변 글타래를 보이고 있습니다
-
글쓴이글
-
-
rhrnakrnakr참가자
- 글작성 : 0
- 답글작성 : 40
음… 고수도 아니고 문제를 정확히 파악할 수 없어서 조심스럽습니다만… 지레짐작하건데 fetchImage라는 이름에서 해당 함수 내부에서 네트워크를 통해 통신을 하고 있다고 생각됩니다.
만약 그렇다고 한다면 fetchImage에 넘겨주는 후행클로저는 서버에서 응답이 잘 도착한 경우에만 실행이 되는데첫번째로 이게 비동기로 동작을 해서 parseData는 빈 memberModels를 리턴하고,
두번째로 후행클로저는 선언 당시의 memberModels를 캡쳐하는데 이때 memberModels는 값타입인 Array이기 때문에 값이 복사가 되어서, parseData에서 리턴이 된 memberModels와 후행클로저에서 캡처한 memberModels가 서로 다른 배열이 되어서 그런 게 아닐까 생각합니다.
틀릴 수도 있으니 후행클로저 내에서 memberModels의 레퍼런스와 실제로 사용하는 곳에서의 memberModels의 레퍼런스를 비교해보시면 좋을 것 같습니다
제가 문제를 바르게 인식했다면… 값타입과 참조타입, 동기와 비동기, @escaping closure와 capture list에 대해서 공부를 해보시면 도움이 될 것 같습니다.
- 이 답변은 rhrnakrnakr에 의해 2 years, 10 months 전에 수정됐습니다.
2022-01-30 오전 12:00 #51635 -
rhrnakrnakr참가자
- 글작성 : 0
- 답글작성 : 40
2022-01-30 오후 4:28 #51645
-
글쓴이글
3 답변 글타래를 보이고 있습니다
- 답변은 로그인 후 가능합니다.