반응형
App의 생명주기
App의 생명주기는 아래 5가지 상태를 가진다.
- Not Running : 실행되지 않은 상태
- In Active : 앱이 실행 중인 상태이지만 아무런 event를 받지 않은 상태
- Active : 앱이 실행중이며 event가 발생한 상태
- BackGround : 앱이 BackGround에 있는 상태이지만 실해오디는 코드가 있는 상태
- Suspended : 앱이 BackGround에 있고 실행되는 코드가 없는 상태
앱이 동작하는 과정을 나누어보면 아래 4가지 상태를 볼 수 있다.
- 앱을 시작할 때
- 앱을 비활성화 할 때
- 앱을 활성화 할 때
- 앱을 종료할 때
:(NSDictionary *)launchOptions => 어플리케이션이 처음 실행될 때. (처음 메모리상에 올라가게 될 때를 말함)
application didFinishLaunchingWithOptions(void)applicationDidBecomeActive
:(UIApplication *)application => 어플리케이션이 활성화 될 때, 즉 didFinishLaunchingWithOption 호출 직후, 어플리케이션이 백그라운드로 돌아갔다가 다시 불러질 때 호출(void)applicationWillResignActive
:(UIApplication *)application => 어플리케이션이 백그라운드로 들어가기 직전(홈버튼을 누른 직후)에 호출 됨(void)applicationDidEnterBackground
: 어플리케이션이 백그라운드로 완전히 들어갔을 때 호출됨(void)applicationWillEnterForeground
:(UIApplication *)application => 어플리케이션이 다시 활성되기 직전에 호출됨 (백그라운드 상에서 다시 어플리케이션이 활성되면 willEnterForeground 호출 후 applicationDidBecomeActive 호출)(void)applicationWillTerminate
:(UIApplication *)application => 어플리케이션이 완전히 종료되기 직전에 호출 됨
꼭 다시 볼것
https://woozzang.tistory.com/78
앱의 실행과정
- App Touch
- main() 안에서
UIApplicationMain()
호출,UIApplication
객체 생성 UIApplication
객체는info.plist
파일으로부터 앱에 필요한 데이터와 객체들을 로드- 커스텀 코드를 처리하기 위한
AppDelegate
를 생성하고 이를UIApplication
객체와 연결 - 실행을 준비하고
application(_:willFinishLaunchingWithOptions:)
호출 - 준비가 끝나고 앱 실행 직전에
application(_:didFinishLaunchingWithOptions:)
호출 Main run loop
실행, 이벤트 큐를 이용해 이벤트 순차 처리,- 앱을 더이상 사용하지 않으면
iOS System
에terminate
메시지 전달applicationWillTerminate(_:)
호출 - App종료
Swift
는 C 계열의 언어가 아니기 때문에 main()
과 같은 시작점을 갖지 않는다.
따라서, @UIApplicationMain
이라는 어노테이션을 통해 UIApplication
객체 생성 과정을 대신한다.
모든 iOS 앱들은 UIApplication
함수를 실행한다.
이 때 생성되는 것 중 하나가 UIApplication
객체이며 이는 Singleton
형태로 생성되어, UIApplication.shared
형태로 앱 전역에서 사용이 가능하다.
반응형
'모바일앱 > iOS' 카테고리의 다른 글
error - cannot find [ ] in scope iphoneSE3공개 (0) | 2022.03.08 |
---|---|
component와 split 함수 그리고 map함수 (0) | 2022.03.07 |
노치 부분까지 레이아웃 설정하는 방법 (0) | 2022.02.24 |
JSON이란 (0) | 2022.02.23 |
Progress Bar(2) (0) | 2022.02.17 |
Progress Bar (0) | 2022.02.16 |
xib의 이름으로 화면전환하기 (present) (0) | 2022.02.14 |
serial(직렬)과 Concurrent(동시) (0) | 2022.01.17 |