-
[iOS] About App Development with UIKit (UIKit μΌλ‘ μ± κ°λ°νκΈ°)iOS/π€ App 2021. 6. 16. 01:01
1μ°¨ μμ : 21.08.02
μλ νμΈμπΆ
μ€λμ 'About App Development with UIKit' λΌλ λ¬Έμλ₯Ό μ€μν λ΄μ© μμ£Όλ‘ μ 리ν΄λ³΄κ² μ΅λλ€
UIKit μ μν
UIKit νλ μμν¬λ iOS μ±μ μ μν λ νμν νμ μ€λΈμ νΈλ€μ μ 곡ν΄μ€λλ€.
μλ₯Ό λ€μ΄μ μ°λ¦¬κ° λ§λ 컨ν μΈ λ₯Ό νλ©΄μ νμν΄ μ€ μ μλ μ€λΈμ νΈλΌλκ°,
μ½ν μΈ μ μνΈμμ©μ νλ κΈ°λ₯μ ν μ μλ μ€λΈμ νΈλΌλκ°,
λ§μ§λ§μΌλ‘ μμ€ν κ³Όμ μνΈμμ©μ κ΄λ¦¬ν μ μλ μ€λΈμ νΈλ₯Ό μ 곡ν΄μ€λλ€.
μ±λ€μ UIKit νλ μμν¬μ μμ‘΄ν΄μ μμ κ°μ΄ κΈ°μ΄κ° λλ λμλ€μ μνν©λλ€.
UIKit μ μ΄κ²λΏλ§ μλλΌ
λμμ 컀μ€ν°λ§μ΄μ¦ ν μ μλ λ°©λ²λ μ 곡ν©λλ€.
UIKit κ³Ό Foundation μ ν©νμ¬ Cococa Touch Framework λΌκ³ ν©λλ€
μ± λ²λ€μ΄λ?
App bundle μ Xcode κ° νλ‘μ νΈλ₯Ό μ»΄νμΌνκ³ λ§λ€μ΄λΈ κ²°κ³Όλ¬Όμ λλ€.
μ± λ²λ€μ ꡬ쑰ν λ λλ ν°λ¦¬ ννμ λλ€.
κ·Έλ¦¬κ³ μμ€ μ½λ μ μ±μ νμν λͺ¨λ 리μμ€λ€μ μ λΆ ν¬ν¨νκ³ μμ΅λλ€.
μ¬κΈ°μ 리μμ€λ λμ€ν¬μ μ μ₯λλ ννμ νμΌλ€λ‘
image assets, storyboard νμΌλ€, string files,
κ·Έλ¦¬κ³ μ±μ λ©νλ°μ΄ν° (info.plist) λ±μ ν¬ν¨ν©λλ€.
μ± μ€νμ νμν λ©νλ°μ΄ν°: Info.plist
Xocde μμλ Property List λΌλ νμΌ νμ (.plist ) μ μ§μνλλ°,
κ°λ¨ν λ§νμλ©΄ μμ μ¬μ§ μ²λΌ
Key : Value μμΌλ‘ μ΄λ£¨μ΄μ§ ν μ΄λΈμ λλ€.
μ± λ²λ€μλ μ±μ λ©νλ°μ΄ν°λ₯Ό λ΄κ³ μλ Info.plist νμΌμ΄ νλ‘μ νΈ μμ±μμ κΈ°λ³Έμ μΌλ‘ ν¬ν¨λ©λλ€.
κ·Έλ¦¬κ³ μ΄ info.plist λ νμ νλ€λ©΄ μμ ν μ μμ΅λλ€.
iOS λ μ±μ ꡬλμν¬ λ μ΄ Info.plist λ₯Ό ν΅ν΄μ μ±μ μ€μ κ³Ό κ°λ₯ν λμλ€μ νμ ν©λλ€.
μμ²λΌ νλμ¨μ΄ μ μ½μ μΆκ°νλ©΄ App Storeπ κ° μ μ μ½μ μΆ©μ‘±μν€μ§ μλ κΈ°κΈ°λ€μ΄ μ±μ μΈμ€ν¨νλκ²μ λ§μμ€λλ€.
UIKit μ±μ μ½λ ꡬ쑰
λλΆλΆμ μ±μ μ½μ΄ν λμλ€μ UIKit μ μμ‘΄νκ³ μμ΅λλ€.
:: μμ€ν κ³Ό μνΈμμ©, μ±μ main event loop μ€ν, μ½ν μΈ λ₯Ό νλ©΄ μμ νμνκΈ° λ±
κ·Έλμ μ°λ¦¬λ μ΄λ° κΈ°λ₯μ μ 곡νλ UIKit μ μ€λΈμ νΈλ€μ κ·Έλλ‘ (as-is) μ¬μ©νκ±°λ,
νμ©λ λ²μμμ 컀μ€ν°λ§μ΄μ§νμ¬ μ¬μ©ν©λλ€.
μ΄ λ μ΄λ€ μ€λΈμ νΈλ₯Ό λ³κ²½ν΄μΌ νλμ§ μλ κ²,
κ·Έλ¦¬κ³ μ΄λ€ μμ μ λ³κ²½ν΄μΌ νλμ§ μλ κ²μ΄ μ±μ κ°λ°νλλ°μ μμ΄μ κ°μ₯ μ€μν λΆλΆμ λλ€.
UIKit μ±μ ꡬ쑰λ MVC λͺ¨λΈμ κΈ°μ΄νκ³ μμ΅λλ€.
Model λ μ΄μ΄λ λ³΄ν΅ μ°λ¦¬κ° μ±μ νμν μλ£κ΅¬μ‘°λ₯Ό μ μνμ¬ λνλ λλ€.
Data Objects λ λ§ κ·Έλλ‘ μ°λ¦¬κ° μ μν class, struct , enum λ±
Document λ νμΌ ννμΈ κ²μ 보λ Storyboard, plist, assets λ± μ ννν κ² κ°μ΅λλ€.
Controller λ μ΄μ΄λ λλΆλΆμ μ€λΈμ νΈλ₯Ό UIkit μμ μ 곡ν©λλ€.
μ± μ€νκ³Ό λμμ μμ±λλ UIApplication μ€λΈμ νΈ, UIApplicationDelegate μ€λΈμ νΈ λ±...
UIApplication μ μ€ν μ€μΈ μ±μ μ 체 μλͺ μ£ΌκΈ°λ₯Ό κ΄λ¦¬ν©λλ€.
μ¦, μ± μ€ν μ€μλ νμ μ‘΄μ¬νλ μ€λΈμ νΈμ λλ€.
UIApplication κ³Ό μ°κ΄κ΄κ³ (UML ννμ΄λΌκ³ κ°μ νμ΅λλ€) λ‘ ννλμ΄μλ Event Loop λ μ±μ main event loop λ₯Ό κ°λ¦¬ν΅λλ€. μ΄ λΆλΆμ κ΄λ ¨ 곡μλ¬Έμμμ μ’ λ λ€λ£¨μ΄μΌν κ² κ°μ΅λλ€.
Application Delegate μ μμ‘΄κ΄κ³μΈ
View Controller λ λ³΄ν΅ UIVIewController ν΄λμ€λ₯Ό 컀μ€ν (μλΈν΄λμ±) νμ¬ μ¬μ©ν©λλ€.
MVC μν€ν μ²μμ Controllerμ μν μ Model κ³Ό View μ¬μ΄μμ λ°μ΄ν°λ₯Ό μ λ¬ν΄μ£Όλ κ²μ λλ€.
View Layer λ UIWindow λ₯Ό ν¬ν¨νκ³ μλλ°,
UIWindow μ€λΈμ νΈ μμμ λ·° μ€λΈμ νΈλ€μ΄ νλ©΄μ ννλ©λλ€.
μ½ν μΈ νμλ₯Ό λ΄λΉνλ UIView μ€λΈμ νΈλ€, λ·° μ€λΈμ νΈλ€λ 컀μ€ν νμ¬ μ¬μ©ν©λλ€.
λν Metal κ³Ό λ€λ₯Έ μμ€ν νλ μμν¬λ€λ‘λ μ½ν μΈ λ₯Ό λ λλ§νμ¬ νλ©΄μ νμν μ μλ€κ³ ν©λλ€.
μ΄ λΆλΆκ³Ό κ΄λ ¨νμ¬, CALayer μ Core Animation μ λν΄ μ°μ 곡λΆν΄λ³΄μλ κ²μ μΆμ²ν©λλ€.
π₯π₯π₯π₯π₯π₯
μ΄ λ¬Έμλ₯Ό μ½μ΄λ³΄λ, λ€μμ μ 리ν΄μΌ ν κ²λ€μ΄ λμ λ°νλ€μ!!
Main event loop,
App Launching Sequence(μ 리 μλ£) λ₯Ό μ΄ν΄λ΄μΌκ² μ΅λλ€.
κ³μ μ 리ν΄λκ°κ²μ~
λ!
π€π’[μ°μ§±μ iOS λΈλ‘κ·Έ]π΅π»
iOSλ₯Ό 곡λΆνλ©΄μ λ°°μ΄ λ΄μ©μ κΈ°λ‘νκ³ μμ΅λλ€.'iOS > π€ App' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[iOS] CALayer λ? (0) 2021.07.05 [iOS] Dependency Injection (μμ‘΄μ± μ£Όμ ) μ΄λ? (0) 2021.06.20 [iOS] DispatchQueue.main.sync { } λ μ΄λ»κ² μλν κΉ? (0) 2021.06.07 [iOS] GCD (Grand Central Dispatch) λ? (feat. main & global dispatch queue) (0) 2021.06.07 [iOS] KVO λ? (Key Value Observing) (0) 2021.05.22