[iOS] LifeCycle(생명주기)

-inn·2022년 2월 20일
0

iOS

목록 보기
2/8

생명주기(Lifecycle)


App LifeCycle

: 앱의 실행부터 종료까지의 주기
: 메모리나 데이터를 관리하여 사용성 ⬆️ 보안 처리 가능

ex) foreground active ↔ foreground inactive : wifi 느릴 경우


Scene LifeCycle

UIApplication, AppDelegate

: UIApplication 객체로부터 전달되는 msg를 AppDelegate 객체가 받고 각각의 상황을 실행할 함수들을 정의

Not Running : 앱이 실행되지 않은 상태
Inactive : 앱이 실행중인 상태 그러나 아무런 이벤트를 받지 않는 상태
Active : 앱이 실행중이며 이벤트가 발생한 상태
Background : 앱이 백그라운드에 있는 상태 그러나 실행되는 코드가 있는 상태
Suspened : 앱이 백그라운드에 있고 실행되는 코드가 없는 상태

AppDelegate.swift 파일 안의 delegate 함수들

application(_:didFinishLaunching:) - 앱이 처음 시작될 때 실행
applicationWillResignActive: - 앱이 active 에서 inactive로 이동될 때 실행
applicationDidEnterBackground: - 앱이 background 상태일 때 실행
applicationWillEnterForeground: - 앱이 background에서 foreground로 이동 될때 실행 (아직 foreground에서 실행중이진 않음)
applicationDidBecomeActive: - 앱이 active상태가 되어 실행 중일 때
applicationWillTerminate: - 앱이 종료될 때 실행

SceneDelegate

iOS 13 이후부터 지원되는 multiple scene 기능에 잘 대응하기 위해


AppDelegate / SceneDelegate

AppDelegate

1. func application(_: didFinishLaunchingWithOptions: ) -> Bool

application의 setup을 이 메소드 안에서 진행한다.

2. func application(_: configurationForConnecting:options: ) -> UISceneConfiguration

application이 새로운 scene/window를 제공하려고 할 때 호출되는 메소드이다.

3. func application(_: didDiscardSceneSessions: )

사용자가 scene을 버릴 때 호출된다.

SceneDelegate

1. scene(_: willConnectTo: options: )

UISceneSession lifecycle에서 제일 처음 불리는 메소드로 첫 content view, 새로운 UIWindow를 생성하고 window의 rootViewController를 설정한다.
(window : app이 작동하는 viewport)

2. sceneWillEnterForeground(_ :)

scene이 foreground로 전환될 때 호출된다.
1) background → foreground 가 되었을 때
2) 그냥 처음 active 상태가 되었을 때

3. sceneDidBecomeActive(_ :)

inactive → active로 전환될 때 호출된다.

4. sceneWillResignActive(_ :)

active → inactive로 전환될 때 호출된다.
ex) 앱스위처 상황

5. sceneDidEnterBackground(_ :)

scene이 foreground → background로 전환 될 때 호출된다.
다음에 다시 foreground에 돌아 올 때 복원할 수 있도록 state 정보를 저장하거나, 데이터를 저장, 공유 자원 돌려주는 등의 일을 하도록 한다.

6. sceneDidDisconnect(_ :)

scene이 background로 들어갔을 때 시스템이 자원을 확보하기 위해 disconnect할 가능성이 있다.
(disconnect :session에서 끊어진다 / app 종료의 의미가 아니다)


ViewController LifeCycle

참조 사이트
https://sihyungyou.github.io/iOS-lifecycle/
https://sueaty.tistory.com/134

profile
☁️

0개의 댓글