View Controller Lifecycle
뷰 컨트롤러는 라이프 라이클을 가지고 있음
인스턴스 생성과 준비 그리고 Outlet 설정이 끝나면 viewDidLoad 가 불린다.
viewDidLoad
- 초기화 코드를 넣기에 좋은 장소
- Update UI 하기 좋은 장소
- Geometry 는 아직 세팅되어 있지 않다(its bounds)
- 무엇가 확실히 나타나지 않는 것들은 viewDidLoad에 설정하지 않는다(복잡한 로직이나 네트워크 등)
- 한 번만 호출 된다(중요)
viewWillAppear
- 화면을 올리기 직전에 호출됨
- 복잡한 로직을 실행하기 좋은 곳이다.
viewDidAppear
- 화면이 나타는 직후에 호출되는 메소드
- animation을 시작하기 좋은 곳
viewWillDisappear
- viewDidAppear()에서 했던 것들은 undo(되돌리기)하게 될 곳
- stop animation
viewDidDisappear
- 네트워크에서 가져온 데이터를 풀어줄 수 있음
Geometry changed
- viewWillLayoutSubviews()
- viewDidLayoutSubviews()
- View에 상태에 따라 Bounds가 변함 -> navigationBar는 뷰 위에 있어서 변하지 않지만, TabBar는 뷰와 겹쳐서 Bound가 변한다.
viewWillTrasitionToSize
- 유저가 디바이스를 가로.세로로 전환할때 자동으로 bound를 바꾸어 줌
- 개발자가 viewWillTrasitionToSize() 함수를 사용하여 수동으로 조작할 수도 있음
didReceiveMemoryWarning
- 메모리 부족 상황에서는 didReceiveMemoryWarning 메소드가 호출된다.
awakeFromNib
- 스토리보드로 부터 나오는 모든 오브젝트를 이 메소드로 보냄
- 아웃렛이 세팅되기 전에 발생
- 결론
- Instantiated(from storyboard usually)
- awakeFromNib
- segue preparation happens
- outlets get set
- viewDidLoad
- These pairs will be called eath time your Controller's view goes on/off screen ...
- viewWillAppear and viewDidAppear
- viewWillDisapper and viewDisDisappear
- These "geometry changed" methods might be called at any time after viewDidLoad
- viewWillLayoutSubviews
- viewDidLayoutSubviews
- If memory gets low, you might get ...
- didReceiveMemoryWarning