-
[iOS] About the App Launch Sequence (μ± μ€ν μμ μ μΌμ΄λλ μΌλ€)iOS/π€ App 2021. 2. 2. 06:38
1μ°¨ μμ : 21.08.02
μλ νμΈμπΆ
μ΄λ² μκ°μλ "About the App Launch Sequence"
μ±μ μ€ν μμ μ μ€νλλ μ½λλ€μ λν΄μ μμλ³΄κ² μ΅λλ€.
μ±μ μ¬μ©μμ μν΄ foregroundλ‘ μ€νλκΈ°λ νκ³ , μμ€ν μ μν΄ background λ‘ μ€νλκΈ°λ νμ£ ?
print("hello, world") μ κ°μ λ¨μν μ μ°¨μ§ν₯ νλ‘κ·Έλ¨κ³Ό λ¬λ¦¬
μ±μ μ€ννλ κ²μ 볡μ‘ν λ¨κ³μ κ³Όμ μ κ±°μΉ©λλ€.
μ΄ κ³Όμ λ€ λλΆλΆμ UIKitμ΄ μλμΌλ‘ μ²λ¦¬ν©λλ€.
μ± μ€ν κ³Όμ μ€, UIKit μ AppDelegate μ λ©μλλ€μ νΈμΆν©λλ€.
νλ‘μ νΈ ν νλ¦ΏμΌλ‘ κΈ°λ³Έ μ 곡νλ AppDelegate ν΄λμ€λ
UIResponder μ UIApplicationDelegate νλ‘ν μ½μ μ±ννκ³ μμ΅λλ€.
>> [iOS] 리μ€ν°λ 체μΈμ΄λ? (feat. UIResponder...) <<
μ°λ¦¬λ UIApplicationDelegate νλ‘ν μ½μ λ©μλλ₯Ό μ§μ ꡬνν΄
μ± μ€ν μ€ μνλ μμ μ μνλ μμ μ μ€νμν¬μ μμ΅λλ€.
μλ₯Ό λ€μ΄ μ€ν 리보λλ₯Ό μ¬μ©νμ§ μκ³ μ½λλ‘ UIλ₯Ό ꡬμ±ν λ,
UIWindow μ€λΈμ νΈμ μ§μ rootViewController λ₯Ό μ€μ ν΄μ£Όκ³ KeyWindow λ‘ λ§λ€μ΄ μ£Όλ κ³Όμ μ κ±°μΉλλ°, μ΄ λμλ€μ UIApplicationDelegate λ©μλλ UIWindowSceneDelegate λ©μλμ ꡬνν©λλ€.
μλ κ·Έλ¦Όμ μ±μ΄ μ²μ μ€νλμμ λ λΆν°μ μ΄κΈ°νλ₯Ό μλ£νκΈ° κΉμ§μ μΌλ ¨μ κ³Όμ μ λ¬μ¬νκ³ μμ΅λλ€.
κ³Όμ μ μμλλ‘ μ μ΄λ³΄κ² μ΅λλ€.
1. μ°μ , μ±μ΄ μ¬μ©μλ μμ€ν μ μν΄ μ€νλ©λλ€.
μ΄ λ¬Έμμμ μ¬μ©μμ μν μ€νμ `explicitly` νκ²,
μμ€ν μ μν μ€νμ `implicitly`νκ² μ€νλλ€κ³ ννλμ΄ μμ΅λλ€.
2. Xcode κ° μ 곡νλ main( ) ν¨μκ° UIApplicationMain(_:_:_:_:) λ₯Ό μ€νν©λλ€.
" main() ν¨μλ UIKIt κΈ°λ° μ±μ main entry point κ° λ©λλ€. "
μ°Έκ³ λ‘ μ΄ μνΈλ¦¬ ν¬μΈνΈλ₯Ό νΈνκ² μ€μ νλ λ°©λ²μΌλ‘
κΈ°μ‘΄μλ @UIApplicationMain νΉμ±μ μ¬μ©νμλλ°,
Swift5.3 λΆν°λ @main μ μ¬μ©ν©λλ€.
μ νν νμλ©΄, Xcode κ° μλλΌ UIApplcationDelegate κ° main() μ ꡬνμ μ 곡ν©λλ€.
>> νλ‘ν μ½μ extension μ ν΅ν΄ ꡬνμ μ 곡ν μ μλ μ κΈ°μ΅νμλμ? <<
λ°λΌμ UIApplicationDelegate λ₯Ό μ±νν AppDelegate μ
μ»΄νμΌλ¬μ μν΄ μΆκ°λ unique main entry code μΈ
AppDelegate.main()κ° μ€ν λ©λλ€.
κ·Έλ¦¬κ³ μ΄ main() μ΄ UIApplicationMain(_:_:_:_:) μ μ€νμν€λ κ² κ°μ΅λλ€.
( λ΄λΆ ꡬνμ λ³Ό μ μκΈ° λλ¬Έμ μΆμΈ‘μ λλ€)
3. UIApplicationMain(_:_:_:_:) μ΄
UIApplication μ€λΈμ νΈ μ AppDelegate μ€λΈμ νΈλ₯Ό μμ±ν©λλ€.
AppDelegate.init() μ΄ λ³΄μ΄μλμ?
AppDelegate μ€λΈμ νΈκ° μμ±λλ μμ μ λΈλ μ΄ν¬ ν¬μΈνΈλ₯Ό κ±Έμ΄μ μ΄ν΄λ³Έ κ²μ λλ€.
μ΄ μμ μλ UIAppplciation μ€λΈμ νΈλ κ°μ΄ μμ±μ΄ λμκ² λ€μ.
λ©μΈ μ°λ λμ μ€ννλ μ μμλ μ΄ 9κ°μ ν¨μκ° μλλ°, κ·Έμ€ 2~4λ²μ μλ΅νμ¬ λ³΄μ¬μ£Όμ§ μκ³ μμ΅λλ€.
UIApplicationMain(_:_:_:_:) μ체λ νλ‘μ νΈμ λλ¬λ μμ§ μμμ, λΈλ μ΄ν¬ ν¬μΈνΈλ₯Ό κ±Έ μ μμμ΅λλ€π
4. UIKit κ° μ±μ λ©μΈ μ€ν 리보λ νΉμ nib νμΌμμ μ±μ κΈ°λ³Έ μΈν°νμ΄μ€λ₯Ό λΆλ¬μ΅λλ€.
μ£Όμ μ μ΄κΈλκΈ° λλ¬Έμ μμΈνκ² μ€λͺ μνμ§ μκ² μ§λ§
μ€ν 리보λ(.storyboard) μ (.xib) νμΌμ UI μμΉ΄μ΄λΈ μ λλ€.
λ°λΌμ νμΌ -> μ½λ -> λ°μ΄λλ¦¬λ‘ λ³νν΄ μ£Όλ κ³Όμ μμ init?(coder:) λ₯Ό νμμ μΌλ‘ νΈμΆνκ² λ©λλ€.
>> [iOS] init?(coder:) λ? <<
5. UIKitμ΄ AppDelegate μ application(_:willFinishLaunchingWithOptions:) λ₯Ό νΈμΆν©λλ€.
μ΄ μ½λμμ 컀μ€ν λμμ μμ±ν μ μμμ΅λλ€.
μ°Έκ³ λ‘ willFinishiLaunchingWithOptions, didFinishLaunchingWithOptions μλ μ±μ΄ μ΄λ»κ² μ€νλμλμ§ μ λν μ λ³΄κ° μ λ¬λ©λλ€.
6. UIKit κ° `state restoration`μ μνν©λλ€.
μ΄ μμ μμ μ± delegate λ 뷰컨νΈλ‘€λ¬μμ μΆκ°μ μΈ λ©μλλ€μ νΈμΆν©λλ€.
7. UIKit κ° AppDelegate μ application(_:didFinishLaunchingWithOptions:) λ₯Ό νΈμΆν©λλ€.
μ΄κΈ°νκ° μλ£λλ©΄, μμ€ν μ μ°λ¦¬μ μ±μ μ¬ λΈλ¦¬κ²μ΄νΈλ μ± λΈλ¦¬κ²μ΄νΈλ₯Ό μ¬μ©νμ¬ UI λ₯Ό νμνκ³ μ±μ μλͺ μ£ΌκΈ°λ₯Ό κ΄λ¦¬ ν©λλ€.
λ!
π€π’[μ°μ§±μ iOS λΈλ‘κ·Έ]π΅π»
iOSλ₯Ό 곡λΆνλ©΄μ λ°°μ΄ λ΄μ©μ κΈ°λ‘νκ³ μμ΅λλ€.'iOS > π€ App' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[iOS] MVC λ? (feat. Cocoa MVC) (0) 2021.03.03 [iOS] Frame κ³Ό Bounds μ 곡ν΅μ κ³Ό μ°¨μ΄μ (0) 2021.02.04 [iOS] UIApplication μ΄λ? (0) 2021.01.28 [iOS] Responding to the Launch of Your App (곡μλ¬Έμ μ 리) (0) 2021.01.28 [iOS] Managing Your App's Life Cycle (곡μλ¬Έμ μ 리) (0) 2021.01.26