뷰나 앱의 생명주기를 나타내는 여러 이벤트나 단계
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()
함수가 호출됩니다. 이 함수는 앱이 종료될때 수행