breakpoint로 thread, async 실험

hankyulee·2021년 10월 1일
0

thread

목록 보기
1/2

breakpoint실험으로 async,thread(main or another..)을 알아보자..
Urlsession.shared.dataTask에서 completion 핸들러를 메인 스레드로 보내는 코드를 보곤한다.

  • delegate queue라 그런가보다.

  • 근데 파이어베이스에서는 main스레드에서 돌아간다.

  • 위의 클로저는 resource 프로퍼티가 사용될때 불린다.

  • 따라서 프로퍼티의 클로저역시 main thread에서 실현된다.

  • ui 를 modification할 때는 main스레드에서 안하면 오류가 뜬다..

  • 요런식으로.. 메인스레드에서 하라는 말이다.

  • 컴플리션 헨들러를 다른 스레드에서 실행시키면 그 스레드에서 계속남아있게 될 수 도있다. 그러면 문제가 되는데, 그 컴플리션 헨들러가 최종적으로 ui를 modification할 가능성이 있는 코드이기 때문이다.

  • 컴플리션 헨들러로 부터 받아온 데이터가 다음과 같이 ui변경에 쓰이는 경우이다. 그러니까 global로 보내지 말자..

결론:

  • 메인스레드에서 ui를 수정하자.

깨달은 사실:

  • 위와같이 dispatchqueue에서 돌린 컴플리션헨들러가 끝나면, 즉 어쩌면 뷰컨트롤러 까지 돌고온 후 주석부분을 거친다.

0개의 댓글