본문 바로가기

iOS 앱 개발자 프로젝트/iOS 입문

[iOS] LifeCycle - App, ViewController, AppDelegate

2024년 3월 22일 금요일

생명주기(LifeCycle) 개념에 대해 정리해 봅니다.


 

App LifeCycle

 

 

App LifeCycle

 

  NotRunning

  앱이 실행되지 않는 상태.

  Inactive    

  앱이 실행 중인 상태 그러나 아무런 이벤트를 받지 않는 상태 (Foreground)

  Active 

  앱이 실행 중이며 이벤트가 발생한 상태 (Foreground)

  Background

  앱이 백그라운드에 있는 상태. 그러나 실행되는 코드가 있는 상태

 Suspend

  앱이 백그라운드에 있고 실행되는 코드가 없는 상태

     

 

UIViewController LifeCycle

 

 

UIView Controller LifeCycle

 

 

📌 init()

     UIViewController 객체가 생성

 

📌 loadView()

     컨트롤러의 뷰 계층 구조가 생성

 

📌 viewDidLoad()

     뷰 계층 구조가 메모리에 로드되었으며, 초기화 작업을 수행

 

📌 viewWillAppear()

     뷰가 화면에 나타나기 직전에 호출. 뷰를 업데이트하거나 애니메이션을 시작

 

📌 viewDidAppear()

     뷰가 화면에 나타나면 호출. 애니메이션을 종료하거나 뷰의 상태를 업데이트

 

📌 viewWillDisappear()

     뷰가 화면에서 사라지기 직전에 호출. 데이터를 저장하거나 애니메이션 시작

 

📌 viewDidDisappear()

     뷰가 화면에서 사라지면 호출. 애니메이션을 종료하거나 뷰의 상태를 업데이트 

 

📌 deinit

     UIViewController 객체가 메모리에서 해제

 

예제코드

class MyViewController: UIViewController {
    
    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
        // 초기화 메서드에서 필요한 작업 수행
    }
    
    required init?(coder: NSCoder) {
        super.init(coder: coder)
        // 초기화 메서드에서 필요한 작업 수행
    }
    
    override func loadView() {
        // 뷰를 직접 생성하여 할당
        self.view = UIView()
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // 뷰에 대한 추가 구성 작업 수행
    }
    
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        // 뷰가 나타나기 전에 수행할 작업 수행
    }
    
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        // 뷰가 나타난 후에 수행할 작업 수행
    }
    
    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        // 뷰가 사라지기 전에 수행할 작업 수행
    }
    
    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
        // 뷰가 사라진 후에 수행할 작업 수행
    }
    
    deinit {
        // 뷰 컨트롤러가 메모리에서 해제되기 전에 수행할 작업 수행
    }
    
}

 

 

AppDelegate 객체의 메소드 호출

 

 앱의 생명주기(LifeCycle) 상태에 따라 AppDelegate 객체의 SceneDelegate 에서 특정 메소드를 호출하게 된다

 

 

 

 

References

 

 

UIViewController | Apple Developer Documentation

An object that manages a view hierarchy for your UIKit app.

developer.apple.com

 

 

View Controller Programming Guide for iOS: The Role of View Controllers

View Controller Programming Guide for iOS

developer.apple.com

 

 

Auto Layout Guide: Understanding Auto Layout

 

developer.apple.com

 

 

Auto Layout Guide: Working with Constraints in Interface Builder

 

developer.apple.com