티스토리 뷰

안녕하세요. 오늘은 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