티스토리 뷰
안녕하세요. 오늘은 iOS의 생명주기에 대해 알아보는 시간을 가지도록 하겠습니다.
iOS 앱을 실행하면
사용자가 iOS 앱을 실행하면 다음과 같은 일이 발생합니다.
- UIApplication 객체 생성
- AppDelegate 객체 생성
- Event Lopp를 실행하면서 유저의 이벤트 구독
UIApplication 객체는 싱글톤 객체로 여러 이벤트를 감지하고
AppDelegate에 전달하는 역할을 합니다.
iOS 앱 생명주기
NotRunning : 앱이 실행되지 않는 상태
Inactive : 앱이 실행 중인 상태 그러나 아무런 이벤트를 받지 않는 상태
Active : 앱이 실행 중이며 이벤트가 발생한 상태
Background : 앱이 백그라운드에 있는 상태 그러나 실행되는 코드가 있는 상태
Suspened : 앱이 백그라운드에 있고 실행되는 코드가 없는 상태
위 상태에 따라 실행되는 delegate함수들을 통해
앱이 특정 상태에서 동작하는 로직을 구현할 수 있습니다.
// 앱이 처음 시작될 때 실행
application(_:didFinishLaunching:)
// 앱이 active 에서 inactive로 이동될 때 실행
applicationWillResignActive:
// 앱이 background 상태일 때 실행
applicationDidEnterBackground:
// 앱이 background에서 foreground로 이동 될 때 실행
// (아직 foreground에서 실행중이진 않음)
applicationWillEnterForeground:
// 앱이 active상태가 되어 실행 중일 때
applicationDidBecomeActive:
// 앱이 종료될 때 실행
applicationWillTerminate:
ViewController 생명주기
iOS에서는 여러개의 ViewController가 모여 하나의 어플을 만듭니다.
그렇기에 각각의 ViewController는 상태와 생명주기가 있습니다.
viewDidLoad : ViewController가 처음 호출 될 때
viewWillAppear : ViewController가 화면에 나타나기 직전에 호출
viewDidAppear : ViewController가 화면에 나타난 직후에 호출
viewWillDisappear : ViewController가 화면에 사라지기 직전에 호출
viewDidDisappear : ViewController가 화면에 사라진 직후에 호출
viewDidLoad는 앱을 실행한 후 처음으로 ViewController를 호출할 때 동작하며
이 후에는 호출되지 않습니다.
이 후 ViewWillAppear -> ViewDidAppear ->
ViewWillDisappear -> ViewDidDisappear -> 순으로 순환되며 동작합니다.
위 상태에 맞추어 동작하는 함수들을 UIKit의 UIViewController안에 배치되어 있습니다.
ViewController의 상태에 따라 동작하는 로직을 설정하여 보다 효율적인 개발을 하시기 바랍니다.
마치며
안드로이드에 비해 간결한 생명주기를 가지고 있어서 쉽게 이해할 수 있었습니다.
포스팅에 관한 질문이나 오류는 하단 댓글에 남겨주시면
답장 드리겠습니다.
위 포스팅은 Young Kim의 블로그를 참고하여 제작하였습니다.
감사합니다!
'기술 및 라이브러리 소개' 카테고리의 다른 글
Git 간단 소개 (0) | 2018.05.24 |
---|---|
WebRTC란? (1) | 2018.05.20 |
RxJava - Observable의 종류 (0) | 2018.05.19 |
RxJava - Observable 생성 함수 (0) | 2018.05.17 |
RecyclerView LayoutManager 소개 (0) | 2018.05.14 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday