[iOS] UIImagePicker 호출 후, ViewDidLoad가 호출되는 이유.
최근 개발하고 있는 프로젝트에 겪었던 기 현상을 먼저 이야기 하자면 이렇다.
ViewController 에서 UIImagePicker 를 호출해서 카메라 혹은 사진 앨범을 띄워서 선택을 하고 나서 ViewDidLoad 함수가 호출되는 현상을 목격했습니다.
맥부기에 물어본 결과.
uiimagepickercontroller 를 사용하시면 (modal 로 띄우겠죠?) 대부분 memory warning 이 발생합니다.
memory warning 이 생기면 여러가지 떠 있는 viewcontroller 들 중에 보이지 않는 controller 들의 viewDidUnload 를 호출합니다.
그리고 카메라를 다 사용하고 나면 (dismiss 시키게되면) .. 원래 controller 의 viewDidLoad 를 호출합니다.
그래서 viewDidLoad 가 호출되는 것처럼 보일 수 있습니다.
UIImagePickerController 를 띄우는 Controller 에서 viewDidUnload 에서 적절한 처리를 해 주시면 됩니다.
이렇다고 하네요, 결과적으로는 카메라 호출로 인해서 생기는 “메모리 경고”로 인한 ViewDidLoad의 문제 였습니다. 확인해 본 결과 실제로 카메라 혹은 포토라이브러리 호출로 인한 메모리 경고시에는 해당 뷰가 ViewUnload가 호출되고 dismissModal 후 ViewLoad가 다시 호출되는 것을 확인하였습니다. 때문에 한번만 호출된다는 개념을 가지고 접근해서 코드를 ViewDidLoad 에 작성해서는 안될것 같습니다. 그리고 이런 호출이 있는 경우를 잘 체크해서 코드를 작성해야 할것 같습니다.