지식

iOS 생명주기 완벽 이해: 앱 실행부터 종료까지 단계별 정리

iOS 생명주기란?

“iOS 생명주기(iOS Lifecycle)”는 앱이 실행되고 종료될 때까지의 흐름을 의미합니다.
이 흐름을 이해하면 앱이 언제 메모리를 할당하거나 해제해야 하는지,
또 화면이 언제 그려지고 사라지는지를 명확히 파악할 수 있습니다.


앱 전체 생명주기 (AppDelegate / SceneDelegate)

앱 단위에서의 생명주기는 다음 5단계로 나뉩니다.

단계상태설명
1Not Running앱이 실행되지 않은 상태
2Inactive앱이 실행 중이지만 사용자 입력 불가 (전화 수신 등)
3Active앱이 실행 중이며 입력 가능 (정상 상태)
4Background홈 버튼 등으로 백그라운드 전환된 상태
5SuspendedCPU 미사용, 메모리만 유지되는 상태

주요 콜백 메서드:

func applicationDidBecomeActive(_ application: UIApplication)
func applicationWillResignActive(_ application: UIApplication)
func applicationDidEnterBackground(_ application: UIApplication)
func applicationWillEnterForeground(_ application: UIApplication)
func applicationWillTerminate(_ application: UIApplication)

SceneDelegate 역할 (iOS 13 이후)

iOS 13부터 SceneDelegate가 도입되어 멀티 윈도우 환경을 지원합니다.
즉, iPad나 iPhone에서 여러 인스턴스의 앱 화면(Scene)을 관리할 수 있습니다.

func sceneWillEnterForeground(_ scene: UIScene)
func sceneDidEnterBackground(_ scene: UIScene)

AppDelegate는 앱 전체 환경 설정, SceneDelegate는 화면 단위 상태 관리를 담당합니다.


ViewController 생명주기 (UIViewController Lifecycle)

이제 말씀하신 viewWillAppear, viewDidDisappear 등은 바로 여기입니다.
화면(ViewController)의 생명주기는 다음 순서로 진행됩니다.

순서메서드설명
1viewDidLoad()뷰가 메모리에 로드될 때 (한 번만 호출됨)
2viewWillAppear(_:)화면이 나타나기 직전
3viewDidAppear(_:)화면이 완전히 나타난 후
4viewWillDisappear(_:)화면이 사라지기 직전
5viewDidDisappear(_:)화면이 완전히 사라진 후

🔹 viewDidLoad(): 데이터 초기화, UI 설정
🔹 viewWillAppear(): 화면 갱신, 애니메이션 준비
🔹 viewDidDisappear(): 자원 해제, 타이머 정리 등

override func viewDidLoad() {
    super.viewDidLoad()
    print("뷰가 메모리에 로드됨")
}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    print("화면이 곧 나타남")
}

override func viewDidDisappear(_ animated: Bool) {
    super.viewDidDisappear(animated)
    print("화면이 완전히 사라짐")
}

생명주기 이해의 중요성

  1. 메모리 관리: 뷰가 사라질 때 불필요한 객체 해제
  2. 데이터 갱신: 화면이 나타날 때 최신 데이터 반영
  3. 애니메이션 제어: 전환 타이밍 조절로 부드러운 UI 구현
  4. 성능 최적화: 필요 시점에만 네트워크 호출 및 연산 수행

함께 보면 좋은 글


정리

iOS 생명주기는 **앱 전체(AppDelegate / SceneDelegate)**와 화면 단위(ViewController) 두 영역으로 나뉩니다.
각 단계의 호출 시점을 이해하면, 앱이 더 안정적이고 효율적으로 동작합니다.

eorbaos1985

Recent Posts

Aluminium OS – 구글의 차세대 Android 기반 PC OS

Aluminium OS - Android가 PC로 향하는 이유와 의미 2025년 말, 구글이 내부 코드명 “Aluminium”로 불리는…

3개월 ago

2026년 기준중위소득 100% · 120% — 1~4인 가구 기준 완전정리

1. 2026년 기준중위소득이란? 2026년 기준중위소득은 대한민국 전체 가구의 중간 소득을 의미하며, 정부의 다양한 복지사업과 지원제도의…

3개월 ago

한국, 월드컵 2포트 진입 추진! 월드컵 2포트의 장단점 총정리

월드컵 2포트 진입, 왜 이렇게 중요한가? 한국 축구 대표팀이 월드컵 2포트 진입을 목표로 국제 A매치를…

3개월 ago

플러터 스키아 엔진 완전 이해: 왜 플러터는 스키아로 빠른 UI를 만드는가

플러터 스키아 엔진 완전 이해: 왜 플러터는 스키아로 초고속 UI를 구현할까 플러터(Flutter)는 단 하나의 코드베이스로…

3개월 ago

플러터 그리드 위젯 완벽 가이드: GridView로 반응형 UI 만들기

플러터 그리드 위젯 완벽 가이드 플러터(Flutter)는 하나의 코드베이스로 iOS, Android, Web까지 동시에 빌드할 수 있는…

3개월 ago

Flutter 생명주기 완벽 이해: 위젯의 생성부터 소멸까지 한눈에 정리

Flutter 생명주기란 무엇인가? **Flutter 생명주기(Lifecycle)**란, 앱 실행 중 위젯이 생성되고 사라지기까지의 전 과정을 의미합니다.즉, Flutter…

3개월 ago