1. 뷰 컨트롤러 수명 주기 설명
-viewController에도 수명주기가 있다.
1. viewDidLoad : 가장 먼저 일어나는 코드로 모든 IBOutlets, IBActions, 모든 뷰 관련 객체가 연결된다. 뷰가 있을 때 한 번만 호출된다.
2. viewWillAppear : 실제로 뷰가 화면에 나타나기 직전에 호출된다. 사용자가 아무 것도 볼 수 없을 때 우리가 무언가를 할 수 있는 좋은 시점이다.
3. viewDidAppear : 뷰가 나타나고 난 후에 호출된다.
4. viewWillDisappear : 뷰가 사라질 때 쯤 호출된다.
5. viewDidDisappear : 뷰가 이미 사라지고 난 후에 호출된다.
2. 앱 수명 주기 설명
-앱의 최초 실행부터 앱이 완전히 종료될 때까지 앱의 상태와 그 상태들 사이의 전이를 뜻한다. 앱의 상태는 앱이 현재 어떤 것을 할 수 있는가를 결정한다.
-Foreground : 사용자가 앱을 보고있는 화면이다.
-background : 앱이 홈화면에 들어가서 사용자한테 보이지 않는 상태를 의미한다. 앱이 뒤에서 실행되고 있는 상태
1) Not Running : 앱이 실행되지 않았거나, 완전히 종료되어 동작하지 않는 상태를 말한다.
Not Running 상태에서 사용되는 메서드
-application( _:wiiFinishLaunchingWithOptions: ) : 앱을 실행할 때 최초로 실행할 코드를 작성하면 좋다. 필요한 주요 객체들을 생성하고 앱 실행 준비가 끝나기 직전에 호출된다.
-applicationDidFinishLaunching( _: ) : 앱 실행을 위한 모든 준비가 끝난 후에 화면이 사용자에게 보여지기 직전에 호출된다. 이 곳에서 주로 초기화 코드를 작성한다.
-applicationWillTerminate( _: ) : 앱이 종료되기 직전에 호출되는 메서드.
2) Inactive (Foreground) : 앱이 실행되면서 foreground에 진입하지만, 어떠한 이벤트도 받지 않는 상태이다. 앱의 상태 전환 과정에서 잠깐 머무는 단계.
In-Active 상태에서 사용되는 메서드
-sceneWillEnterForeground( _: ) : 앱이 백그라운드나 not running에서 foreground로 들어가기 직전에 호출되는 메서드이다.
-sceneWillResignActive( _: ) : app switcher 모드로 사용자가 홈 버튼을 누르거나, 홈 바를 쓸어 올렸을 경우에 호출되는 메서드이다.
3) active (Foreground) : 앱이 실행 중이며, foreground에 있고, 이벤트를 받고 있는 상태이다.
Active 상태에서 사용되는 메서드
-sceneDidBecomeActive( _: ) : 앱이 비활성화 상태에서 활성화 상태로 진입하고 난 직후 호출되는 메서드이다. 앱이 실제로 사용되기 전에, 마지막으로 준비할 수 있는 코드를 작성할 수 있다.
4) Background : 앱이 백그라운드에 있으며, 다른 앱으로 전환되었거나, 홈 버튼을 눌러 밖으로 나갔을 때의 상태이다. 하지만 일정시간이 지나면 suspended 상태로 바뀐다.
ex) 음악 app을 켜놓고 다른 app을 사용해도 재생해둔 음악은 계속 실행되는 경우
-sceneDidEnterBackgorund( _: ) : 앱이 background 상태로 들어갔을 때 호출되는 메서드이다. suspended 상태가 되기 전 중요한 데이터를 저장하는 등 종료하기 전 필요한 작업을 하는 것이 좋다.
5) Suspended : 앱이 백그라운드 상태에 있지만, 아무 코드도 실행하지 않은 상태이다. 백그라운드에서 특별한 작업이 없이 시간이 지나면 suspended 상태가 된다. 이 상태에서 앱은 메모리상에 올라가있지만 아무일도 하지 않기 때문에 배터리를 사용하지 않는다. 또한 OS에 의해 메모리 부족현상이 발생하면 이 상태의 앱은 메모리에서 없어질 수 있으며, 이는 따로 알림을 하진 않는다.
-suspended 상태일 때 따로 호출되는 메서드는 없다.
'개린이 이야기' 카테고리의 다른 글
Data base에 관하여 (0) | 2022.06.11 |
---|---|
샌드박싱, NSCoder에 관하여 (0) | 2022.06.11 |
깃허브 (0) | 2022.04.19 |
커맨드 라인 (0) | 2022.04.14 |
파이어 베이스, 정적키워드 이해, 메모리 기초 등 (0) | 2022.04.11 |