[App]
Life Cycle
Not Running
: 앱이 실행되지 않은 상태
: 실행되고 난 후, 시스템은 UI가 화면에 보여야한다면 앱을 inactive 상태에, 아니라면 background 상태에 둔다.
: foreground로 시작할 때 시스템은 자동으로 앱을 active상태로 전환한다Inactive
: 앱이 foreground에서 실행중이지만 아무런 이벤트를 받지 않고 있는 상태
: 앱의 화면은 보이지만 상호작용이 안되는 상태Active
: 앱이 foreground에서 실행중이며 이벤트를 받고 있는 상태
: 앱의 화면도 보이고 상호작용도 되는 상태Background
: 앱이 background에 있으며 실행되는 코드가 있는 상태
: 대부분 앱은 suspended상태로 이행하는 도중에 일시적으로 이 상태에 진입하지만 파일 다운로드, 업로드 등 특정 시간동안 이 상태로 남아있게 되는 경우도 있음
: 시스템이 임의로 Background 상태의 앱을 Suspended 상태로 만든다Suspended
: 앱이 background에 있지만 실행되는 코드가 없는 상태
: 메모리가 부족한 상황이 오면 iOS system은 foreground에 있는 앱의 여유 메모리 공간 확보를 위해 이 상태에 있는 앱들을 특별한 알림없이 정리할 수도 있음관련 메서드
[Scene]
Life Cycle
Unattached
: scene이 연결되지 않은 상태Foreground Inactive
: 앱이 foreground에서 실행중이지만 아무런 이벤트를 받지 않고 있는 상태
: 앱의 화면은 보이지만 상호작용이 안되는 상태Foregroud Active
: 앱이 foreground에서 실행중이며 이벤트를 받고 있는 상태
: 앱의 화면도 보이고 상호작용도 되는 상태Background
: 앱이 background에 있으며 실행되는 코드가 있는 상태
: 대부분 앱은 suspended상태로 이행하는 도중에 일시적으로 이 상태에 진입하지만 파일 다운로드, 업로드 등 특정 시간동안 이 상태로 남아있게 되는 경우도 있음
: 시스템이 임의로 Background 상태의 앱을 Suspended 상태로 만든다Suspended
: 앱이 background에 있지만 실행되는 코드가 없는 상태
: 메모리가 부족한 상황이 오면 iOS system은 foreground에 있는 앱의 여유 메모리 공간 확보를 위해 이 상태에 있는 앱들을 특별한 알림없이 정리할 수도 있음관련 메서드
[App Life Cycle vs Scene Life Cycle]
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로 가는 화살표가 없다. *
[View]
Life Cycle
View Life Cycle의 주기
loadView
: 뷰 컨트롤러가 자신의 뷰, 그러니까 흔히 self.view처럼 접근하는 그 뷰 컨트롤러의 메인 뷰를 로드할 때 호출되는 메서드viewDidLoad
: View가 로딩된 직후에 로직을 실행해라사용 예시)* 화면이 처음 만들어질 때 한 번만 실행되므로, 처음 한 번만 실행해야 하는 초기화 코드가 있을 경우 이 메소드 내부에 작성 (앱 초기작업)
viewWillAppear
: View가 나타나기 직전에 로직을 실행해라사용 예시)* 다른뷰에 갔다가 다시 돌아오는 상황에 로직을 실행하고 싶을 때
viewDidAppear
: View가 나타난 직후에 로직을 실행해라사용 예시)* 뷰가 나타났다는 것을 컨트롤러에게 알리는 역할을 합니다. 또한 화면에 적용될 애니메이션을 그려줘요
viewWillDisappear
: View가 사라지기 직전에 로직을 실행해라사용 예시)* 뷰가 삭제 되려고하고있는 것을 뷰 콘트롤러에 통지
viewDidDisappear
: View가 사라진 직후에 로직을 실행해라사용 예시)* 뷰 컨트롤러가 뷰가 제거되었음을 알려줌
[background vs suspended]
background : 앱을 나가도 코드가 실행되는 상태
- 예를 들어 음악 재생, GPS, 녹음 등의 기능은 앱을 끄거나 다른 앱으로 넘어가도 계속 실행
suspended : 앱이 Background 상태에 있지만, 아무 코드도 실행하지 않는 상태
- 앱이 memory에는 유지되지만 memory 부족 상태가 나타나면 system이 memory에서 제거
- background에서 특별히 수행해야 하는 기능이 없다면 background 상태를 거쳐서 suspended 상태로 넘어감
[참고]
https://eunjin3786.tistory.com/163
https://zeddios.tistory.com/43
https://sihyungyou.github.io/iOS-lifecycle/
'iOS - 실무관련 > iOS' 카테고리의 다른 글
Info.plist (0) | 2022.03.28 |
---|---|
App Project (0) | 2022.03.28 |
Info.plist - Privacy (0) | 2022.03.28 |
동기 / 비동기와 직렬 / 동시 (0) | 2022.03.28 |
URL to Image (0) | 2022.03.28 |