Skip to main content

Command Palette

Search for a command to run...

iOS Life Cycle

Updated
iOS Life Cycle
T

안녕하세요🙇🏻‍♂️ 세상을 더 편리하게 바꾸고 싶은 iOS 개발자 최인호입니다.

Hello 👋 I'm Inho Choi, an iOS developer who wants to change the world more conveniently.

  • 대학교 졸업
  • Apple Developer Academy @ POSTECH 1기
  • KWDC Main Organizer
  • AsyncSwift Organizer

AppDelegate 에도 applicationDidBecomeActive 가 있고

SceneDelegate 에도 sceneDidBecomeActive가 있다.

하지만 AppDelegate의 applicationDidBecomeActive는 작동하지 않는다.

?? 아비규환이다. 내 머리속 혼돈이 지나가고 있다. 정리할 필요가 있다. 정리해보자

Life Cycle

우선 3가지 분류와 분류 속 5가지 상태가 있음을 알아야한다.

3가지 분류

  • Foreground

  • Background

  • 그 외

5가지 상태

  • Foreground

    • Active

    • Inactive

  • Background

    • Background
  • 그 외

    • Not running

    • Suspended

앱 실행

Not Running -> Foreground(진입) -> Active

willFinishLaunchingWithtOptions

AppDelegate

didFinishLaunchingWithOptions

AppDelegate

willConnectTo

SceneDelegate

sceneWillEnterForeground

SceneDelegate

sceneDidBecomeActive

SceneDelegate

먼저 Scene이 작동되기 전에 당연하게 App 이 실행되어야 함

그래서 AppDelegate의

willFinishLaunchingWithOptions -> didFinishLaunchingWithOptions 가 실행된다.

그리고 SceneDelegate 함수들이 작동한다.

willConnectTo -> sceneWillEnterForeground -> sceneDidBecomeActive 가 실행된다.

여기서 주의해야 할 점은 Active가 되기 위해서는 반드시 InActive를 거쳐야 한다는 것이다.

앱 Background로 돌리기

sceneWillResignActive

SceneDelegate

sceneDidEnterBackground

SceneDelegate

앱 실행시와 마찬가지로 Active는 반드시 InActive로 바뀌고 난 후에 상태 변경이 가능하다.

앱 종료

시뮬레이션에서 앱 종료 시연을 하려고 했는데 함수 실행이 안된다. 왜 그런지 아시는 분? ㅠㅠ

비정상적인 종료만 해서 그런가 ㅠ.ㅠ 하지만 이론적으로만 설명!

applicationWillTerminate

AppDelegate

앱이 백그라운드에 들어간 후에 메모리가 줄어든다면 iOS에서 사용하지 않는 앱을 Kill 한다.

그럴 때 applicationWillTerminate를 실행한다.

공부하면서 느낀 궁금증

왜 AppDelegate 함수는 실행 안되지?

생각해보면 AppDelegate에도 Foreground, Background 관련된 메소드가 있었다.

하지만 진작 실행은 안된다 왜일까??

정답은 공식문서에 있었음

scene을 사용한다면 UIKit은 이 메소드를 부르지 않는다.

SceneDelegate에서 설정해라. 라는 말이다.

Inactive의 기능은 무엇일까?

Foreground의 Inactive는 말 그대로 앱이 Foreground(전반)에 있지만 active 하지 못할 때이다.

  • 시리가 켜지거나

  • 전화 알림

  • Alert 뜨는 상황

즉, 사용자로부터 이벤트를 받지 못하는 상황이다.


참고한 문서

Apple Developer

Manasa M P's Medium

More from this blog

[CS] Https는 대칭키일까? 비대칭키일까?

결론: 둘 다 쓴다. 하지만 쓰는 타이밍은 다르다. 자세하기 알아보자. 혹시 모르니 용어는 정리해두자. 암호화 <-> 복호화 해독 = 복호화 비대칭키 해독은 대칭키 해독보다 오래 걸린다. 비대칭키를 쓰는 과정 💡 비대칭키는 대칭키를 만들기 위한 여정에 쓰인다. 뭔 소리지??? 대칭키를 만들기 위해서 비대칭키가 쓰인다고?? 비대칭키 해독은 대칭키 해독보다 오래걸린다. 1. Client가 Server에 접속을 요청하면 서버는 Secret ...

Jun 6, 202417

Xcode Cloud 사용 후기

애플에게 내는 친구비를 내며 Apple Developer 계정을 유지하려면 매년 애플에게 13만원의 친구비를 지불해야한다. 그리고 몇 개 친구 답례 상품을 주는데 그 중 하나가 Xcode Cloud 상품 주는데 안 쓸 이유는 없지 Xcode Cloud 개인에게는 과연? K-Spam 이라는 앱을 오랫동안 구상하고 드디어 출시를 했다. 생각보다 삽질을 많이 한 것 같다. 하지만 사이드 프로젝트의 진정한 의미는 삽질(?)하며 배우는 것이 아니겠나 개...

Jun 3, 202418

iOS Version 주의

앱 버전에는 상위버전이 출시한 상태에서 하위 버전을 아카이브 할 수 없음 예를 들어 출시한 버전이 1.3 이면 1.2로는 아카이브가 불가능함 단, 출시한 적이 없는 앱이라면 버전은 마음대로 지정 가능 App Store Connect의 버전 예를 들어 1.03 이랑 1.1 이랑 비교하면 앱 버전은 1.03 > 1.1 로 인식한다. . 단위로 잘라서 Int로 인식하는 것 같다. 그러니 0은 최대한 사용하지 않고 구분한다면 . 으로 구분해야겠다.

Jun 1, 20248

Toby의 iOS 블로그

34 posts

안녕하세요 세상을 더 편리하게 바꾸고 싶은 iOS 개발자입니다.