← 글 목록

notes

iOS - UIViewController 생명주기

viewDidLoad와 Appear 왕복 차이, deinit까지 한눈에.

Android Activity 다이어그램 그려 두고 iOS 쪽을 안 적어두면 비교가 안 된다. VC 생명주기를 내 말로 다시 씀.

한 번 vs 여러 번

  • loadView / viewDidLoad: 뷰 그래프 만들 때 한 번
  • viewWillAppear / viewDidAppear: 화면 올 때마다
  • viewWillDisappear / viewDidDisappear: 내려갈 때마다
  • deinit: 메모리에서 빠질 때 (Appear와 별개)

어디에 뭘 두나

override func viewDidLoad() {
    super.viewDidLoad()
    // outlet 연결 후 초기 UI, 제스처 등록
}
override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    // 탭 돌아올 때마다 갱신할 데이터
}
override func viewDidDisappear(_ animated: Bool) {
    super.viewDidDisappear(animated)
    // 타이머·관찰자 정리
}

헷갈림

푸시했다가 뒤로 오면 viewDidLoad는 안 불리고 Appear만 다시 돈다. 그래서 “첫 로딩”과 “다시 보임”을 같은 함수에 몰아넣으면 버그가 난다.