μλͺ μ£ΌκΈ° ( LifeCycle )
μλͺ μ£ΌκΈ°λΌλ κ²μ μ±μ μ΅μ΄ μ€νλΆν° μ±μ΄ μμ ν μ’ λ£λκΈ°κΉμ§ μ±μ΄ κ°μ§λ μνμ κ·Έ μνλ€ μ¬μ΄μ μ μ΄λ₯Ό λ§νλ€.
μ±μ μνλ μ±μ΄ νμ¬ μ΄λ ν κ²μ ν μ μλκ°λ₯Ό κ²°μ νλ€.
μ±μ μλͺ μ£ΌκΈ° ( App's Life Cycle )
Appμ μλͺ μ£ΌκΈ°λ APPμ μ€ν/μ’ λ£ λ° Appμ΄ Foreground/Background μνμ μμ λ, μμ€ν μ΄ λ°μμν€λ eventμ μν΄ Appμ μνκ° μ νλλ κ³Όμ μ λ§νλ€.
μΉ΄μΉ΄μ€ν‘ μ±μΌλ‘ μΉ΄ν‘μ νκ³ μλ λμ€μ μ νκ° μμ λ μ±μ΄ νλ©΄μμμ 보μ¬μ§μ§ μλ μνμΈ Background μνμ
μ±μ΄ νλ©΄μ μ¬λΌμμλ μνμΈ Foreground λ±κ³Ό κ°μ μνλ€μ μ μν κ²μ΄λ€.
iOSμμ μ±μ μ€ννλ©΄ λ¬΄μ¨ μΌμ΄ λ²μ΄μ§κΉ ?
iOSμ±μ Objective - C κΈ°λ°μΌλ‘ μλνκΈ° λλ¬Έμ μ±μ main ν¨μμμ μμνλ€. λ€λ§, iOSμ ν΅μ¬ λΌμ΄λΈλ¬λ¦¬μΈ UIKit Frameworkκ° main ν¨μλ₯Ό κ΄λ¦¬νκΈ° λλ¬Έμ μ± κ°λ°μλ€μ΄ μ§μ main ν¨μμ μ½λλ₯Ό μμ±νμ§λ μλλ€.
UIKitμ main ν¨μλ₯Ό λ€λ£¨λ κ³Όμ μμ UIApplicationMain ν¨μλ₯Ό μ€ννλ€. μ΄ ν¨μλ₯Ό ν΅ν΄ UIApplication κ°μ²΄κ° μμ±λλλ°, μ΄ κ°μ²΄λ₯Ό ν΅ν΄ μ± κ°λ°μλ μ±μ μ€νμ λΆλΆμ μΌλ‘ κ΄μ¬ν μ μλ€.
μ±μ΄ μ€νλλ©΄ λ°μλλ μ΄λ²€νΈ μ 리
1. UIApplication κ°μ²΄κ° μμ±λ¨
2. @UIApplicationMain λλ @Main μ΄λ Έν μ΄μ μ΄ μλ ν΄λμ€λ₯Ό μ°Ύμ AppDelegate κ°μ²΄ μμ±
3. Main Event Loopλ₯Ό μ€ν ( touch, text input λ± μ¬μ©μμ μ‘μ μ λ°λ 루ν )
Main Run Loop
κ·Έλ¦ΌμΌλ‘ νμΈν΄λ³΄μ
Main Run LoopλΌλ κ²μ μ μ κ° μΌμΌν€λ μ΄λ²€νΈλ€μ μ²λ¦¬νλ νλ‘μΈμ€μ΄λ€. UIApplicationκ°μ²΄λ μ±μ΄ μ€νλ λ, Main Run Loopλ₯Ό μ€ννκ³ μ΄ Main Run Loopλ₯Ό Viewμ κ΄λ ¨λ μ΄λ²€νΈλ Viewμ μ λ°μ΄νΈμ νμ©νλ€. λν, Main Run Loopλ Viewμ κ΄λ ¨λμ΄ μκΈ° λλ¬Έμ Main μ°λ λμμ μ€νλλ€.
μ μ κ° μΌμΌν€λ μ΄λ²€νΈμ μ²λ¦¬ κ³Όμ μ μμλ‘ μ 리νμλ©΄,
1. μ μ κ° μ΄λ²€νΈλ₯Ό λ°μμν¨λ€. ( λ²νΌ ν°μΉ, νλ©΄ μ€μμ΄ν λ± )
2. μμ€ν μ ν΅ν΄ μ΄λ²€νΈκ° μμ±λλ€.
3. UIKit νλ μμν¬λ₯Ό ν΅ν΄ μμ±λ portλ‘ ν΄λΉ μ΄λ²€νΈκ° μ±μΌλ‘ μ λ¬λλ€.
4. μ΄λ²€νΈλ μ± λ΄λΆμ μΌλ‘ Queueμ ννλ‘ μ 리λκ³ Event Queueμ μμΈλ€.
5. Event Queueμ μλ μ΄λ²€νΈλ€μ΄ Main Run Loopμ νλμ© λ§€νλλ€.
6. UIApplication κ°μ²΄λ μ΄ λ κ°μ₯ λ¨Όμ μ΄λ²€νΈλ₯Ό κ°μ²΄λ‘ μ΄λ€ κ²μ΄ μ€νλμ΄μΌ νλμ§ κ²°μ νλ€.
μμ λ΄μ©κΉμ§ μ¬μ©μκ° μ±μ μ΄λ²€νΈλ₯Ό μ λ¬ν ν
μ±μ μ€νκΉμ§ μ΄λ€ κ³Όμ μ ν΅ν΄ μ΄λ€μ§λμ§ μμ보μλ€.
μ¬κΈ°μλΆν°λ iOSμ±μ μ€νμ μν, μ€ν ν μν λ±μ μμΈν μμλ³΄κ² λ€.
μ± μν ( App State )
μ±μ μνλ μ΄ 3κ°μ§λ‘ ꡬλΆλλ€.
1. Not Running
μ±μ΄ μ€νλμ§ μμκ±°λ, μμ ν μ’ λ£λμ΄ μλνμ§ μλ μν
2. Inactive ( Foreground )
μ±μ΄ μ€νλλ©΄μ Foregroundμ μ§μ νμ§λ§, μ΄λ€ μ΄λ²€νΈλ λ°μλμ§ μμ μνμ΄λ€.
μ±μ μν μ νκ³Όμ μμ μ κΉ λ¨Έλ¬΄λ λ¨κ³
3. active ( Foreground )
μ±μ΄ μ€νμ€μ΄λ©°, Foregroundμ μκ³ , μ΄λ²€νΈλ₯Ό λ°κ³ μλ μνμ΄λ€.
4. Background
μ±μ΄ λ°±κ·ΈλΌμ΄λμ μμΌλ©°, λ€λ₯Έ μ±μΌλ‘ μ νλμκ±°λ νλ²νΌμ λλ¬ λ°μΌλ‘ λκ°μ λμ μνμ΄λ€.
μλ₯Ό λ€μ΄, λ©λ‘ Appμ μΌλκ³ λ€λ₯Έ Appμ μ¬μ©ν΄λ μ¬μν μμ μ΄ κ³μ μ€νλλ κ²½μ°μ΄λ€.
μΌμ μκ°μ΄ μ§λ μ±μ Suspened μνλ‘ λ°λκ² λλ€.
5. Suspened
μ±μ΄ λ°±κ·ΈλΌμ΄λ μνμ μμ§λ§, μ무 μ½λλ μ€ννμ§ μμ μνμ΄λ€.
λ°±κ·ΈλΌμ΄λμμ νΉλ³ν μμ μ΄ μμ κ²½μ° Suspenedμνκ° λλ€.
μ΄ μνμμ μ±μ λ©λͺ¨λ¦¬μμ μ¬λΌκ°μμ§λ§ μ무 μΌλ νμ§ μμκΈ° λλ¬Έμ λ°°ν°λ¦¬λ₯Ό μ¬μ©νμ§ μλλ€.
λν OSμ μν΄ λ©λͺ¨λ¦¬ λΆμ‘±νμμ΄ λ°μνλ©΄ μ΄ μνμ μ±μ λ©λͺ¨λ¦¬μμ μμ΄μ§ μ μμΌλ©°,
μ΄λ λ°λ‘ μλμ νκ±°λ νμ§ μλλ€.
App Delegate κ°μ²΄μ λ©μλ νΈμΆ
μ±μ μλͺ μ£ΌκΈ° μνμ λ°λΌμ
AppDelegate κ°μ²΄μ SceneDelegateμμ νΉμ λ©μλλ₯Ό νΈμΆνκ² λλ€.
1. Not Running μνμΌ λ
application(_:willFinishLaunchingWithOptions:)
μ λ©μλ μμλ μ±μ μ€νν λ μ΅μ΄λ‘ μ€νν μ½λλ₯Ό μμ±νλ©΄ μ’λ€.
νμν μ£Όμ κ°μ²΄λ€μ μμ±νκ³ μ± μ€ν μ€λΉκ° λλκΈ° μ§μ μ νΈμΆλλ€.
applicationDidFinishLaungching(_:)
μ± μ€νμ μν λͺ¨λ μ€λΉκ° λλ ν νλ©΄μ΄ μ¬μ©μμκ² λ³΄μ¬μ§κΈ° μ§μ μ νΈμΆλλ€.
μ£Όλ‘ μ΄κΈ°ν μ½λλ₯Ό μ΄κ³³μλ€ μμ±νλ€.
applicationWillTrerminate(_:)
μ±μ΄ μ’ λ£λκΈ° μ§μ μ νΈμΆλλ€.
2. In - Active μνμΌ λ
sceneWillEnterForeground(_:)
μ±μ΄ backgroundλ not runningμμ foregroundλ‘ λ€μ΄κ°κΈ° μ§μ μ νΈμΆλλ€.
λΉνμ±ν μνλ₯Ό κ±°μ³ νμ±ν μνκ° λλ€.
sceneWillResignActive(_:)
App Swithcer λͺ¨λ ( ν λ° μΈμ΄ μ¬λ Έμ κ²½μ° λλ ν λ²νΌ λͺ¨λΈ νλ²νΌ λλ² λλ μ κ²½μ° )
3. Active μν μΌ λ
sceneDidBecomeActive(_:)
μ±μ΄ λΉνμ±ν μνμμ νμ±μνλ‘ μ§μ νκ³ λ μ§ν νΈμΆλλ€.
μ±μ΄ μ€μ λ‘ μ¬μ©λκΈ° μ μ, λ§μ§λ§μΌλ‘ μ€λΉν μ μλ μ½λλ₯Ό μμ±ν μ μλ€.
4. Background μν μΌ λ
sceneDidEnterBackground(_:)
μ±μ΄ background μνλ‘ λ€μ΄κ°μ λ νΈμΆλλ€.
suspened μνκ° λκΈ° μ μ μ€μν λ°μ΄ν°λ₯Ό μ μ₯νλ λ± μ’ λ£νκΈ° μ νμν μμ μ νλ€.
5. Suspened μνμΌ λ
λ°λ‘ νΈμΆλλ λ©μλλ μμΌλ©° background μνμμ νΉλ³ν μμ μ΄ μμ λ μ΄ μνκ° λλ€.
iOS 12μ iOS 13μ΄μλΆν° λμμ μ°¨μ΄κ° μλλ°, λ¨Όμ iOS 12 κΉμ§μ λμμ μ΄ν΄λ³΄λ©΄,
~ iOS 12 : SceneDelegate μμ
iOS 13 ~ : SceneDelegate μμ
iOS 12κΉμ§μ λμ ( Sceneμ μ§μ νμ§ μλ κ²½μ° )
iOS 12κΉμ§λ SceneDelegateκ° μλ€. ( iOS 13λΆν° μ‘΄μ¬ )
Sceneλ₯Ό μ§μνμ§ μλ κ²½μ°, λͺ¨λ μλͺ μ£ΌκΈ° κ΄λ ¨ μ΄λ²€νΈλ€μ appDelegateμ μ λ¬λλ€.
κ°κ°μ μνμ μ κ·ΌνκΈ° μν΄ μ¬μ©λλ νμΌμ΄ AppDelegate.swift μ΄λ€.
iOSμ± νλ‘μ νΈλ₯Ό μμ±νλ©΄ AppDelegate.swift νμΌμ΄ μλμΌλ‘ μμ±λμ΄ μλ€.
AppDelegateλ μ΄λ¦ κ·Έλλ‘ μ±κ³Ό μμ€ν μ μ°κ²°μ μν΄ νμν delegate λ©μλλ₯Ό λ΄κ³ μλ€.
iOS 13λΆν°μ λμ ( Sceneλ₯Ό μ§μνλ κ²½μ° )
SceneDelegateλ iOS13λΆν° μΆκ°λ ν΄λμ€μ΄λ€.
SceneDelegateλ UI μλͺ μ£ΌκΈ°λ₯Ό κ΄λ¦¬νλ ν΄λμ€μ΄λ€.
iOS12 κΉμ§λ νλμ μ±μ΄ νλμ μλμ°(Window)λ§ κ°μ§κΈ° λλ¬Έμ
AppDelegate ν΄λμ€κ° UI μλͺ μ£ΌκΈ° κ΄λ¦¬κΉμ§ νλ€.
νμ§λ§ iOS13λΆν° νλμ μ±μ μ¬λ¬ κ°μ μλμ°(Window)λ₯Ό λμμ μ¬μ©ν μ μκ² λμκΈ° λλ¬Έμ
UIμλͺ μ£ΌκΈ°λ₯Ό μ λ΄ κ΄λ¦¬ν΄μ€ ν΄λμ€κ° νμν΄μ‘λ€.
μ΄λ₯Ό μν΄ μΆκ°λ ν΄λμ€κ° SceneDelegateμ΄λ€.
μ¦, Sceneλ₯Ό μ§μνλ κ²½μ° Sceneλ³λ‘ λ³λμ μλͺ μ£ΌκΈ°λ₯Ό κ°μ§κ² λλ€.
scene νλλ λλ°μ΄μ€μμ λμκ°λ μ±μ UIμΈμ€ν΄μ€ νλλ₯Ό λνλΈλ€.
νλμ μ±μ μ¬λ¬κ°μ sceneμ κ°μ§ μ μμΌλ©°, μ΄λ₯Ό κ°λ³μ μΌλ‘ λμ°κ±°λ μ¨κΈΈ μ μλ€.
μ¬μ©μλ μμ€ν μ΄ μλ‘μ΄ sceneλ₯Ό λ§λ€μ΄λ¬λΌκ³ μμ²νλ©΄, UIKitμ μ΄λ₯Ό λ§λ€μ΄ unattahced μνλ‘ λ§λ λ€.
μ¬μ©μκ° μμ²ν sceneμ 곧μ₯ foreground inactive μνλ₯Ό κ±°μ³ activeμνκ° λκ³ ,
μμ€ν μ΄ μμ²ν sceneμ λ³΄ν΅ background μνκ° λμ΄
μ΄λ²€νΈ μ²λ¦¬ν λ€μ foregroundλ‘ μ¬λΌμ¨λ€.
μ 리
[ μ±μ μν 5κ°μ§ ]
- Not Running : μ±μ΄ μ€νλμ§ μλ μν
- Inactive : μ±μ΄ μ€ν μ€μΈ μν, κ·Έλ¬λ μλ¬΄λ° μ΄λ²€νΈλ₯Ό λ°μ§ μλ μν
- Active : μ±μ΄ μ€νμ€μ΄λ©° μ΄λ²€νΈκ° λ°μν μν
- Background : μ±μ΄ λ°±κ·ΈλΌμ΄λμ μλ μν, κ·Έλ¬λ μ€νλλ μ½λκ° μλ μν
- Suspened : μ±μ΄ λ°±κ·ΈλΌμ΄λμ μκ³ μ€νλλ μ½λκ° μλ μν
[ delegate ν¨μλ₯Ό ν΅ν΄, μ±μ΄ νΉμ μνμμ λμνλ λ‘μ§ κ΅¬ν ]
// μ±μ΄ μ²μ μμλ λ μ€ν
application (_: didFinishLaunching:)
// μ±μ΄ activeμμ inactiveλ‘ μ΄λλ λ μ€ν
applicationWillResignActive :
// μ±μ΄ background μνμΌ λ μ€ν
applicationDidEnterBackground:
// μ±μ΄ backgroundμμ foregroundλ‘ μ΄λλ λ μ€ν
// (μμ§ foregroundμμ μ€νμ€μ΄μ§ μμ )
applicationWillEnterForeground:
// μ±μ΄ activeμνκ° λμ΄ μ€νμ€μΌ λ
applicationDidBecomeActive:
// μ±μ΄ μ’ λ£λ λ μ€ν
applicationWillTerminate:
'π iOS > UIKit' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[iOS] Clean Build Folder (0) | 2023.11.24 |
---|---|
[iOS][UiKit] Navigation BackButton ( μ¬λΌμ§λ νμ, νμ΄νλ§ νμ ) (0) | 2023.06.14 |
[iOS][UiKit] SnapKit μ 리 ( inset/offset , translates~ ) (0) | 2023.06.09 |
[iOS] Cell κ·Έλ¦Όμ + λ₯κΈκ² ( shadow, cornerRadius ) (0) | 2023.05.23 |
[iOS] Delegate ν¨ν΄μ λν΄μ (0) | 2023.04.05 |