Swift-LifeCycle

Swift-LifeCycle

[Swift] LifeCycle

viewDidLoad
일반적으로 초기화 하기에 가장 좋은 메서드. 모든 것이 준비되어있고 outlet도 연결돼서 바로 시작이 가능하다.
단 한번만 호출된다.

하지만 아직 경계(bounds)가 설정되지 않았기 때문에 기하와 관련된 설정은 하지 말아야 한다.
–> viewWillLayoutSubViews(), viewDIdLayoutSubViews() 에서 관리

override func viewDidLoad() {
 super.viewDidLoad()
}

viewWillAppear
곧 뷰 컨트롤러의 뷰가 화면에 나타날 것. 화면에 보이지 않던 시간동안 발생한 일을 관리. 주로 최신작업을 해준다.
여러번 호출 가능

override func viewWillAppear() {
 super.viewWillAppear()
}

viewDidAppear
뷰가 화면에 나타난 이후에 호출된다. 애니메이션 같은 작업을 하기에 좋다.
네트워크 작업과 같이 비용이 큰 작업을 하기에 적합하다. 이러한 네트워크 작업은 보통 백그라운드에서 실행한다.
절대 사용자 작업을 방해해서는 안된다.

override func viewDidAppear() {
 super.viewDidAppear()
}

viewWillDisappear
viewWillAppear에서 했던 작업을 그대로 되돌리기 적합하다.
타이머를 시작했거나, 애니메이션을 시작했거나, GPS관찰을 시작했을 때 되돌리기 좋다.

override func viewWillDisappear() {
 super.viewWillDisappear()
}

viewDidDisappear
MVC를 정리하기 좋다. 자주 쓰이지는 않는다.

override func viewDidDisappear() {
 super.viewDidDisappear()
}

viewWillLayoutSubViews(), viewDIdLayoutSubViews()

bounds를 설정하기 위한 메서드들, 하지만 autolayout덕에 보통의 경우엔 호출할 필요가 없다. 컨트롤러에서 관리가 필요할 경우에 사용.

생각보다 여러 경우에 호출될 수 있다. 경계의 변화에 대응하도록 구현할 때 적절히 사용해야 한다.

댓글

이 블로그의 인기 게시물

CGV 상영시간표 알리

[Swift Error] Outlets cannot be connected to repeating content.

tensorflow softmax_cross_entropy_with_logits