Not Running
: 앱이 실행되지 않은 상태
: 실행되고 난 후, 시스템은 UI가 화면에 보여야한다면 앱을 inactive 상태에, 아니라면 background 상태에 둔다.
: foreground로 시작할 때 시스템은 자동으로 앱을 active상태로 전환한다
Inactive
: 앱이 foreground에서 실행중이지만 아무런 이벤트를 받지 않고 있는 상태
: 앱의 화면은 보이지만 상호작용이 안되는 상태
Active
: 앱이 foreground에서 실행중이며 이벤트를 받고 있는 상태
: 앱의 화면도 보이고 상호작용도 되는 상태
Background
: 앱이 background에 있으며 실행되는 코드가 있는 상태
: 대부분 앱은 suspended상태로 이행하는 도중에 일시적으로 이 상태에 진입하지만 파일 다운로드, 업로드 등 특정 시간동안 이 상태로 남아있게 되는 경우도 있음
: 시스템이 임의로 Background 상태의 앱을 Suspended 상태로 만든다
Suspended
: 앱이 background에 있지만 실행되는 코드가 없는 상태
: 메모리가 부족한 상황이 오면 iOS system은 foreground에 있는 앱의 여유 메모리 공간 확보를 위해 이 상태에 있는 앱들을 특별한 알림없이 정리할 수도 있음
Unattached
: scene이 연결되지 않은 상태
Foreground Inactive
: 앱이 foreground에서 실행중이지만 아무런 이벤트를 받지 않고 있는 상태
: 앱의 화면은 보이지만 상호작용이 안되는 상태
Foregroud Active
: 앱이 foreground에서 실행중이며 이벤트를 받고 있는 상태
: 앱의 화면도 보이고 상호작용도 되는 상태
Background
: 앱이 background에 있으며 실행되는 코드가 있는 상태
: 대부분 앱은 suspended상태로 이행하는 도중에 일시적으로 이 상태에 진입하지만 파일 다운로드, 업로드 등 특정 시간동안 이 상태로 남아있게 되는 경우도 있음
: 시스템이 임의로 Background 상태의 앱을 Suspended 상태로 만든다
Suspended
: 앱이 background에 있지만 실행되는 코드가 없는 상태
: 메모리가 부족한 상황이 오면 iOS system은 foreground에 있는 앱의 여유 메모리 공간 확보를 위해 이 상태에 있는 앱들을 특별한 알림없이 정리할 수도 있음
1. Scene-based는 inactive, active라는 네이밍 앞에 foreground를 명시적으로 붙였다.
2. App-based는 not running과 suspended사이에 화살표가 있는데, Scene-based는 unattached와 suspended 사이 화살표가 없다
3. App-based는 suspended에서 inactive로 가는 화살표가 있었는데, Scene-Based는 suspended에서 foreground inactive로 가는 화살표가 없다.
loadView
: 뷰 컨트롤러가 자신의 뷰, 그러니까 흔히 self.view처럼 접근하는 그 뷰 컨트롤러의 메인 뷰를 로드할 때 호출되는 메서드
viewDidLoad
: View가 로딩된 직후에 로직을 실행해라
사용 예시) 화면이 처음 만들어질 때 한 번만 실행되므로, 처음 한 번만 실행해야 하는 초기화 코드가 있을 경우 이 메소드 내부에 작성 (앱 초기작업)
viewWillAppear
: View가 나타나기 직전에 로직을 실행해라
사용 예시) 다른뷰에 갔다가 다시 돌아오는 상황에 로직을 실행하고 싶을 때
viewDidAppear
: View가 나타난 직후에 로직을 실행해라
사용 예시) 뷰가 나타났다는 것을 컨트롤러에게 알리는 역할을 합니다. 또한 화면에 적용될 애니메이션을 그려줘요
viewWillDisappear
: View가 사라지기 직전에 로직을 실행해라
사용 예시) 뷰가 삭제 되려고하고있는 것을 뷰 콘트롤러에 통지
viewDidDisappear
: View가 사라진 직후에 로직을 실행해라
사용 예시) 뷰 컨트롤러가 뷰가 제거되었음을 알려줌
https://eunjin3786.tistory.com/163
https://zeddios.tistory.com/43
https://sihyungyou.github.io/iOS-lifecycle/