ASH84

Software Engineer/Developer, co-founder of Payhere. Ex-Banksalad. Intereseted in iteroperability, bootstrap company, writting.

[iOS] UIImagePicker 호출 후, ViewDidLoad가 호출되는 이유.

created:2011-06-04
updated:2015-07-03
edit
최근 개발하고 있는 프로젝트에 겪었던 기 현상을 먼저 이야기 하자면 이렇다. 
ViewController 에서 UIImagePicker 를 호출해서 카메라 혹은 사진 앨범을 띄워서  선택을 하고 나서 ViewDidLoad 함수가 호출되는 현상을 목격했습니다.  
맥부기에 물어본 결과. 
 
[윤찬파파(azone)](http://cafe.naver.com/ArticleRead.nhn?articleid=136606&clubid=16914752#)
정회원 ![](http://cafeimgs.naver.com/levelicon/1/2_110.gif)
2011.06.01 13:56
uiimagepickercontroller 를 사용하시면 (modal 로 띄우겠죠?) 대부분 memory warning 이 발생합니다. 
memory warning 이 생기면 여러가지 떠 있는 viewcontroller 들 중에 보이지 않는 controller 들의 viewDidUnload 를 호출합니다.
그리고 카메라를 다 사용하고 나면 (dismiss 시키게되면) .. 원래 controller 의   viewDidLoad 를 호출합니다.
그래서 viewDidLoad 가 호출되는 것처럼 보일 수 있습니다.
UIImagePickerController 를 띄우는 Controller 에서 viewDidUnload  에서 적절한 처리를 해 주시면 됩니다.  
이렇다고 하네요, 결과적으로는 카메라 호출로 인해서 생기는 “메모리 경고”로 인한 ViewDidLoad의 문제 였습니다. 확인해 본 결과 실제로 카메라 혹은 포토라이브러리 호출로 인한 메모리 경고시에는 해당 뷰가 ViewUnload가 호출되고 dismissModal 후 ViewLoad가 다시 호출되는 것을 확인하였습니다. 때문에 한번만 호출된다는 개념을 가지고 접근해서 코드를 ViewDidLoad 에 작성해서는 안될것 같습니다. 그리고 이런 호출이 있는 경우를 잘 체크해서 코드를 작성해야 할것 같습니다.  

#dev  #IOS  #UIImagePicker  #ViewDidLoad  #ViewDidUnload  #메모리경고