
뷰나 앱의 생명주기를 나타내는 여러 이벤트나 단계

init()UIViewController 객체 생성class MyViewController: UIViewController {
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
// 초기화 메서드에서 필요한 작업 수행
}
}
class MyViewController: UIViewController {
required init?(coder: NSCoder) {
super.init(coder: coder)
// 초기화 메서드에서 필요한 작업 수행
}
}
loadView()class MyViewController: UIViewController {
override func loadView() {
// 뷰를 직접 생성하여 할당
self.view = UIView()
}
}
viewDidLoad()class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 뷰에 대한 추가 구성 작업 수행
}
}
viewWillAppear()class MyViewController: UIViewController {
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// 뷰가 나타나기 전에 수행할 작업 수행
}
}
viewDidAppear()class MyViewController: UIViewController {
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
// 뷰가 나타난 후에 수행할 작업 수행
}
}
viewWillDisappear()class MyViewController: UIViewController {
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
// 뷰가 사라지기 전에 수행할 작업 수행
}
}
viewDidDisappear()class MyViewController: UIViewController {
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
// 뷰가 사라진 후에 수행할 작업 수행
}
}
UIViewController 객체가 메모리에서 해제class MyViewController: UIViewController {
deinit {
// 뷰 컨트롤러가 메모리에서 해제되기 전에 수행할 작업 수행
}
}
Not Running : 실행되지 않거나 종료된 상태
InActive: 앱이 Foreground 상태로 돌아가지만, 이벤트는 받지 않는 상태, 잠시 존재하는 상태
→ 아래에서 위로 스와이프 하는 순간 InActive 상태가 됨
Active: 일반적으로 앱이 돌아가는 상태 (이벤트를 받는 단계)
Background: 앱이 Suspended(유예 상태) 상태로 진입하기 전 거치는 상태
→ 보통 Suspended 상태(음악, 통화 앱 같은 경우는 background)
앱이 Background 상태에 있지만, 아무 코드도 실행하지 않는 상태, 시스템이 임의로 Background 상태의 앱을 Suspended 상태로 만든다.(리소스 해제)
→ Not Running 과 일반적으로 동일

application(_:didFinishLaunchingWithOptions:): 앱이 처음 시작될 때 호출
applicationDidBecomeActive(_:): 앱이 활성 상태가 될 때 호출
applicationWillResignActive(_:): 앱이 비활성 상태가 되기 직전에 호출
applicationDidEnterBackground(_:): 앱이 백그라운드 상태가 될 때 호출
applicationWillEnterForeground(_:): 앱이 백그라운드에서 나와 전면으로 올 때 호출. 그러나 아직 활성 상태가 아님.
applicationWillTerminate(_:): 앱이 종료되기 직전에 호출
UIApplication 객체가 생성.AppDelegate 객체가 생성.UIApplication 객체는 AppDelegate 객체를 delegate로 설정.AppDelegate는 UIResponder, UIApplicationDelegate를 상속 및 참조AppDelegate 객체의 application(_:didFinishLaunchingWithOptions:) 메서드가 호출AppDelegate 객체의 application(_:didFinishLaunchingWithOptions:) 메서드를 호출. 이 메서드는 앱의 초기화를 수행.Root view controller가 생성됩니다.UIWindow를 생성하고, 이 윈도우에 Root view controller를 할당합니다.Root view controller의 view가 생성됩니다.viewDidLoad() 메서드가 호출됩니다.UIViewController의 Life cycle에 따라 동작Background 상태로 전환됩니다.Background 상태로 전환되면, applicationWillResignActive()함수가 호출. 이 함수는 앱이 Background로 전환되기 전에 실행해야 하는 작업을 수행합니다.Foreground 상태로 전환됩니다.Foreground 상태로 전환되면, applicationDidBecomeActive() 함수가 호출됩니다. 이 함수는 앱이 Foreground로 전환된 후 실행해야 하는 작업을 수행합니다.applicationWillTerminate()함수가 호출됩니다. 이 함수는 앱이 종료될때 수행