출처: 수강중인 패스트캠퍼스 30가지 프로젝트 강의 - viewController의 생명주기
해당 강의의 뒷쪽 강의 수강 중, 동일한 초기화 작업인데 일부는 viewDidLoad()함수를 override하며 작성해주었고,
다른 일부는 viewWillAppear()함수를 override하며 작성해주는 것을 보고 두가지를 다른 함수에 override해주는 이유를 바로 받아들이지 못하였다.
시뮬레이터로 작성한 코드를 테스트하던 중, A라는 viewController에서 다른 viewController가 push되었다가 pop되어 다시 A로 돌아왔을 때, 나는 A가 데이터의 변화를 반영하여 화면에 뿌려주기를 바랬고, A는 이미 그렇게 작동하고있었다.
나는 그렇게 의도한 적이 없는데 그렇게 작동하고있는 이유는 A화면으로 돌아올 때마다 viewWillAppear()안의 loadData()함수가 작동하고 있던 것 때문임을 깨달았다.
간단하게
viewDidLoad(): 뷰가 메모리에 load되었을 때 호출, 메모리에 로드될 때 "딱 한 번"호출
viewWillAppear(): 뷰가 뷰 계층에 추가되고 화면에 나타나기 직전에 "매 번" 호출,(다른 뷰로 이동했다 돌아오면 재호출!!)
viewDidAppear():뷰가 화면에 나타난 직후에 실행! 애니메이션을 시작하는 것과 같은 작업
viewWillDisappear(): 뷰가 뷰 계층에서 사라지기 전에 호출. 최종적으로 데이터를 저장하는 작업
GCD(Grand Central Dispatch)를 이용한 MultiThread 프로그래밍 (0) | 2022.05.16 |
---|---|
왜 IOS UI작업은 Main Thread가 해야하는가? (0) | 2022.05.16 |