[iOS] AppDelegate 함수 한 판 정리

Hyunndy·2023년 2월 20일
0

iOS-App-Structure

목록 보기
7/8
post-custom-banner

🐸

시리즈에서 App의 LifeCycle, AppDelegate에 대한 정리를 했는데요.
지금까지 정리했던 함수를 한 판 정리 해보겠습니다.


AppDelegate 함수

1️⃣ 앱이 실행될 때 불리는 함수

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { ... }

👩‍💻
App의 Data Structure 초기화
one-time Setup
앱이 사용하는 중요한 서비스를 연결 (APNs, Kakao SDK, Firebase 등)
앱이 어떻게 launch되었는지 체크 (Push로 실행되었는지 체크하고, 그에 맞는 이벤트를 정의)
내부 캐시 정책 초기화 등.


2️⃣ Inactive 상태로 전환될 때 불리는 함수

  • launch -> Inactive
  • background -> Inactive
/// Scene Support App 
func sceneWillEnterForeground(_ scene: UIScene) { .. }

/// 다른 모든 App
func applicationWillEnterForeground(_ application: UIApplication) { ... }

👩‍💻
Foreground 상태에 들어갈 때 App의 Data 모델을 업데이트 합니다.
Background에서 foreground로 전환될 때, 이 함수를 이용해서 네트워크로 부터 데이터를 fetch하고 disk로 부터 리소스를 로드할 수 있습니다.
-> 이해가 잘 안감. ViewController에서 하는 일이 아닌지?


3️⃣ Inactive -> Active 상태로 전환

func sceneDidBecomeActive(_ scene: UIScene) { ... }
func applicationDidBecomeActive(_ application: UIApplication)  { ... }

👩‍💻
앱의 UI를 구성하고, 런타임에 해야할 일을 세팅하기 좋습니다.

  • 타이머 시작하기
  • 멈췄던 Task 재개, 혹은 시작하기
  • 데이터, 뷰, 컨트롤의 State UI 업데이트


4️⃣ Active -> Inactive -> Background 상태로 전환

func sceneWillResignActive(_ scene: UIScene) { ... }
func applicationWillResignActive(_ application: UIApplication) { ... }

👩‍💻
Background로 들어간다!!!!!! 하고있던거 정리해라!!!!!!

  • 열린 파일 닫고 user data disk에 저장
  • Dispatch 및 Operation queue 정지
  • 타이머, 게임 꺼라
  • 새 Metal, OpenGL 커맨드 날리지마라
func sceneDidEnterBackground(_ scene: UIScene) { ... }
func applicationDidEnterBackground(_ application: UIApplication) { ... }    

👩‍💻
Background다!!! 공유하고있던거 다 해제해!!!

  • 공유 시스템 DB와 연결 끊기, 하드웨어 리소스 접근 해제
  • 메모리에 올라와있는 객체 해제, File로 부터 직접 읽은 이미지, 미디어 제거

5️⃣ App이 제거 될 때

applicationWillTerminate(_:)

6️⃣ App이 URL로 되어있는 리소스를 열 때 불리는 함수

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool { ... }
profile
https://hyunndyblog.tistory.com/163 티스토리에서 이사 중
post-custom-banner

0개의 댓글