Reference
- UIApplication : UIApplication
- UIApplicationDelegate : UIApplicationDelegate
๐ ์ค์ง์ ์ธ root ๊ฐ์ฒด / ์์คํ
๊ณผ์ ์ํธ์์ฉ
App delegate ๊ฐ์ฒด๋ App ์ ์ฒด๊ฐ ๊ณต์ ํ๋ ํ๋๋ค์ ๊ด๋ฆฌํฉ๋๋ค. app delegate๋ App์ ์ค์ง์ ์ธ root ๊ฐ์ฒด๋ผ๊ณ ํ ์ ์์ต๋๋ค. UIApplication ๊ฐ์ฒด์ ํจ๊ป ๋์ํ์ฌ ์์คํ
๊ณผ์ ์ํธ์์ฉ์ ๊ด๋ฆฌํฉ๋๋ค. UIApplication ๊ฐ์ฒด์ฒ๋ผ, App ๋ฐ์น ์ฌ์ดํด ์ด๋ฐ์ UIKit์ด ์ด app delegate๋ ์์ฑํ๋ฏ๋ก, App์ด ์ผ์ ธ์์ผ๋ฉด ํญ์ ์ด์์๋ค๊ณ ๋ณด๋ฉด ๋ฉ๋๋ค
๐ AppDelegate๊ฐ ์ฒ๋ฆฌํ๋ ์์ ๋ค
๐ iOS 12๊น์ง๋ Life-cycle ๊ด๋ฆฌ๋ ํ์๋ค
iOS 13๋ถํฐ๋ scene ์๊ธฐ๋ฉด์ ์ํจ
AppDelegate๋ UIApplicationDelegate
๋ฅผ ์ฑํํ๋ class์
๋๋ค. UIApplication๊ณผ UIApplicationDelegate์ ๋ํด ์์๋ด
์๋ค
๐ UIApplicationMain()์ ์ํด ์์ฑ
๋ชจ๋ iOS App์ ๋จ ํ๋์ UIApplication
์ธ์คํด์ค๋ฅผ ๊ฐ์ง๋๋ค (๋งค์ฐ ๋๋ฌผ๊ฒ subclass๋ฅผ ๊ฐ์ง๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค). App์ด ๋ฐ์น๋ ๋, ์์คํ
์ UIApplicationMain()
๋ผ๋ ํจ์๋ฅผ ํธ์ถํฉ๋๋ค. ์ด ํจ์๋ UIApplication ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ UIApplication.shared
๋ผ๋ ํ์
ํ๋กํผํฐ์ ๊ฝ์์ค๋๋ค
๐ ์ด๋ฒคํธ ์ฌ์ดํด ์
์
UIApplication ๊ฐ์ฒด๋ ์ ์ ์ด๋ฒคํธ๊ฐ ์ฒ์์ ์ด๋ค ๊ฒฝ๋ก๋ก ๊ฐ์ผํ ์ง๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. ์ด ๊ฐ์ฒด๋ UIControl
์ธ์คํด์ค์ ์ํด ๋ณด๋ด์ง action ๋ฉ์์ง๋ฅผ ์ ์ ํ target ๊ฐ์ฒด์๊ฒ ์ ๋ฌํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ App์ ๋ชจ๋ UIView
๊ฐ์ฒด๋ฅผ ์ฐพ๋๋ฐ ์ฌ์ฉํ ์ ์๋ ์ด๋ ค์๋ UIWindow
๊ฐ์ฒด์ ๋ฆฌ์คํธ๋ฅผ ์ ์งํฉ๋๋ค
๐ Delegate
UIApplication ํด๋์ค๋ UIApplicationDelegate
ํ๋กํ ์ฝ์ ์ฑํํ๋ delegate๋ฅผ ์ ์ํฉ๋๋ค. ์ค์ํ ๋ฐํ์ ์ด๋ฒคํธ(App๋ฐ์น, ๋ฉ๋ชจ๋ฆฌ๋ถ์กฑ, App์ข
๋ฃ ๋ฑ)๊ฐ ๋ฐ์ํ๋ฉด UIApplication์ด ์ด delegate์๊ฒ ์๋ ค ์ ์ ํ ๋์ํ๋๋ก ์ํต๋๋ค
์ดํ ์๋ต...
UIKit App์ top-level entry ํฌ์ธํธ. App์ด ๋ฐ์น๋๋ฉด ์์คํ ์ด ์ด ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค
๐ ๋ฐ์น ์๋ฃ ์ง์
application(didFinishLaunchingWithOptions:)
App์ ๋ฐ์น ํ๋ก์ธ์ค๊ฐ ๊ฑฐ์ ์๋ฃ๋์ด ์คํ๋๊ธฐ ์ง์ ์ ํธ์ถ๋๋ ์ฝ๋ฐฑ
๐ Active ์ง์
ํจ
applicationDidBecomeActive()
App์ด active ๋์์ ๋
๐ Resign ์ง์
applicationWillResignActive()
App์ด ํฌ์ปค์ค๋ฅผ ์๋ ๊ฒฝ์ฐ (ex. ํ๋ฒํผ ๋๋ฅด๋ฉด ๊ฐ์ฅ ๋จผ์ ํธ์ถ๋จ)
๐ Background ์ง์
ํจ
applicationDidEnterBackground()
๋ฐฑ๊ทธ๋ผ์ด๋ ์ง์
๋จ
๐ Foreground ์ง์
applicationWillEnterForeground()
๋ค์ ํฌ์ด๊ทธ๋ผ์ด๋๋ก ๋์ค๊ธฐ ์ง์
๐ Scene ์์ฑ
application(configurationForConnecting:)
์๋ก์ด Scene์ ๋ง๋ค ๋ ์ฌ์ฉํ configuration ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํ ๋ฉ์๋. UIKit์ ์๋ก์ด scene์ ์์ฑํ๊ธฐ ์ง์ ์ ์ด ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค
scene-configuration ๋ฐ์ดํฐ ์ด ๋ฉ์๋์ ๊ตฌํํ์ฌ ์ ๊ณตํ๊ฑฐ๋, Info.plist
์ ํฌํจ์์ผ ์ ๊ณตํ ์๋ ์๋ค. Info.plist์ ํฌํจ์ํค์ง ์์๋ค๋ฉด ์ด ๋ฉ์๋๋ฅผ ๋ฐ๋์ ๊ตฌํํด์ผ ํ๋ค. Info.plist์ ํฌํจ์์ผฐ๋๋ผ๋ scene-configuration์ ๋์ ์ผ๋ก ๋ฐ๊พธ๊ธฐ ์ํด ์ด ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์๋ ์๋ค
๐ Scene ์ญ์
application(didDiscardSceneSessions:)
App switcher์์ ํด๋น App์ ํ๋ ์ด์์ scene์ ๋ ๋ฆฌ๋ฉด ํธ์ถ๋๋ค. scene ์ญ์ ์ ๋ฐ๋ผ App ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์
๋ฐ์ดํธํ๊ฑฐ๋ scene์ด ๊ฐ๊ณ ์๋ ๋ฆฌ์์ค๋ฅผ ํด์ ํ๋ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ค
App์ด not running์ด๋ผ๋ฉด ๋ค์ ๋ฐ์น ์์ ์ ํธ์ถ๋๋ค
์์คํ ์ด ๋ฉ๋ชจ๋ฆฌ ๋ฌธ์ ๋ก scene์ disconnectํ ๋๋ ํธ์ถ๋์ง ์๋๋ค. ์ด ๋๋ scene์ ์ฌ๋ผ์ง์ง๋ง ๊ทธ ๊ด๋ จ session๋ค์ ๋ณด์กด๋๋ค
๐ Memory Warnings
applicationDidReceiveMemoryWarning(_:)
App ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๋๋ฌด ๋์ ๋ ์์ ๋๋ฉฐ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ค์
๋๋ค. ์์ธํ ๋ด์ฉ์ Responding to Memory Warnings ์ฐธ๊ณ
๐ Data Protection
applicationProtectedDataDidBecomeAvailable(_:)
applicationProtectedDataWillBecomeUnavailable(_:)
์ ์ ๊ฐ device๋ฅผ lock/unlockํ ๋ ์์ ๋ฉ๋๋ค
๐ Handoff task
application(_:didUpdate:)
NSUserActivity ๊ฐ์ฒด๊ฐ ์ฒ๋ฆฌ๋ ํ์๊ฐ ์์ ๋ ์์ ๋ฉ๋๋ค
* handoff : ์๋ก ๋ค๋ฅธ ์ ํ ๊ธฐ๊ธฐ์์ ๊ธฐ์กด ์์ ์ ๊ณ์ํ๋ ๊ฒ
๐ Time changes
applicationSignificantTimeChange(_:)
(ํต์ ์ฌ๊ฐ ์๊ฐ update๋ฅผ ๋ณด๋ธ๋ค๋์ง) ์ฌ๋ฌ ๋ค๋ฅธ ์ข
๋ฅ์ ์๊ฐ์ด ๋ณ๊ฒฝ๋ ๋ ์์ ๋ฉ๋๋ค
๐ Open URLs
application(_:open:options:)
App์ด ๋ฆฌ์์ค๋ฅผ ์คํํ ํ์๊ฐ ์์ ๋ ์์ ๋ฉ๋๋ค
์๋ ํ์ธ์ ๋๋ฌด ์ข์ ๊ธ ๊ฐ์ฌํฉ๋๋ค.
ํน์ ์คํฐ๋ ๋ ธ์ ์ ์ ๋ฆฌํ๊ณ ๊ณต์ ๋ฅผ ํด๋ ๋ ๊น์ ? ์ถ์ฒ๋ ํด๋น ๋งํฌ๋ก ๋ฐํ๊ฒ ์ต๋๋ค.