2024년 3월 22일 금요일
생명주기(LifeCycle) 개념에 대해 정리해 봅니다.
App LifeCycle
NotRunning |
앱이 실행되지 않는 상태.
|
Inactive |
앱이 실행 중인 상태 그러나 아무런 이벤트를 받지 않는 상태 (Foreground)
|
Active |
앱이 실행 중이며 이벤트가 발생한 상태 (Foreground)
|
Background |
앱이 백그라운드에 있는 상태. 그러나 실행되는 코드가 있는 상태 |
Suspend |
앱이 백그라운드에 있고 실행되는 코드가 없는 상태 |
UIViewController 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
'iOS 앱 개발자 프로젝트 > iOS 입문' 카테고리의 다른 글
[iOS] Closure를 활용한 VC 통신 (feat. prepare method) (0) | 2024.04.01 |
---|---|
[iOS] 간단한 카운트 화면 만들기 (0) | 2024.03.24 |
[iOS] 메모 앱 만들기 Day-3 (0) | 2024.03.22 |
[iOS] UI ↔ Swift Code 연결하기 (0) | 2024.03.21 |
[iOS] Low-Level Debugger (LLDB) (feat. LLVM) (1) | 2024.03.20 |