xcode์์ iosApp ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๋ฉด ๊ผญ ์์ฑ๋๋ ๋ ๋ ์๋ค์ด ์๋ค. ๋ฐ๋ก AppDelegate.swift์ SceneDelegate.swift!
์ด ํ์ผ์ ์์์ ๋งํ๋ค์ถ์ด iOS ์ฑ์ ์ ๋ฐ์ ์ธ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌํ๋ค๊ณ ๋ณด๋ฉด ๋๋ค! (์ฌ๊ธฐ ์ฐธ๊ณ )
SceneDelegate๋ iOS 13๋ถํฐ ์ถ๊ฐ๋ ํด๋์ค๋ก, iOS ์ฑ์ ๋ฉํฐ ํ์คํน๊ณผ ๋ค์ค ์ฐฝ ๊ด๋ จ ์์ ์ ์ฒ๋ฆฌํ๋ค. tableViewDelegate๊ฐ tableView์ ๋์๊ณผ ์ฌ์ฉ์ ์ธํฐ๋ ์ ์ ๊ด๋ฆฌํ๋ ๊ฒ์ฒ๋ผ SceneDelegate๋ Scene์ ๋ํด ์๋์ฐ์ ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ ๊ด๋ฆฌํ๋ค.
์ฌ๊ธฐ์ ์ ๊น?
Scene์ ๋ญ๊ณ ์๋์ฐ๋ ๋ทฐ์ปจํธ๋กค๋ฌ๊ฐ ์ ํํ ๋ญ๋ฐ?

์๋์ฐ๋ iOS์์ ๋๋ฐ์ด์ค์ ์คํฌ๋ฆฐ์ ๋นํ์์ด ์ฑ์ฐ๊ธฐ ์ํ ๊ฐ์ฒด๋ก ํญ์ ์ ์ ์ธํฐํ์ด์ค์ ์ต์์์ ์์นํ๋ค. ๋ทฐ์ ์ผ์ข ์ด์ง๋ง ์ง์ ์ฝํ ์ธ ๋ฅผ ๊ฐ์ง์ง๋ ์์ผ๋ฉฐ ์ฝํ ์ธ ๋ฅผ ๊ฐ์ง ๋ทฐ๋ฅผ ๋ด๋ถ์ ๋ฐฐ์นํ์ฌ ํ๋ฉด์ ์ถ๋ ฅํ๋ ์ญํ ์ ํ๋ค! ํ๋ฉด์ด ์ ํ๋๋ ์ด ์๋์ฐ ๊ฐ์ฒด๋ ์ ํ๋์ง ์์ผ๋ฉด ๋ด๋ถ์ ๋ฐฐ์นํ ๋ทฐ๊ฐ ๋ณ๊ฒฝ๋๋ค๋์ ! ๋๋ถ๋ถ์ iOSApp์ life time๋์ ํ๋์ window๋ง ์์ฑํ๊ณ , ์ฌ์ฉํ๋ค๊ณ ํ๋ค.
์๋์ฐ์ ์ ์ด๋ฌํ ์๋์ฐ๋ฅผ ๊ด๋ฆฌํ๊ณ . ์ฑ์ด ๋ค์ค ์ฐฝ ํ๊ฒฝ์์ ์คํ๋ ๋ ๊ฐ ์ฐฝ๋ง๋ค ๋ณ๋์ UIWindowScene์ด ํ์(์์ดํจ๋์์ ๋ถํ ํ๋ฉด ๋์ฐ๋ ๊ฒ๊ณผ ๊ฐ์ด!)
๋ทฐ๋ ํ๋ฉด์ ์ฝํ ์ธ ๋ฅผ ๋งํ๋ค. ํ๋์ ์๋์ฐ์ ์ฌ๋ฌ ๋ทฐ๊ฐ ๊ฐ์์ ์์น์ ๋์ฌ์์๊ฒ์ด๋ค. ํ ํ๋ฉด์ topView, bottomView ๋ฑ๋ฑ์ด ๊ฐ์์ ์์น์์ ๊ฐ์์ ์ญํ ์ ํ๊ณ ์๋๊ฒ!
๋ทฐ ์ปจํธ๋กค๋ฌ๋ ์๋์ฐ์ ๋ทฐ๋ฅผ ์ฐ๊ฒฐํด์ฃผ๋ ๊ฐ์ฒด์ด๋ค. ๋ทฐ์ปจ์ ๋ทฐ์ ๊ณ์ธต์ ๊ด๋ฆฌํ์ฌ ์๋์ฐ์ ์ ๋ฌํ๊ณ , ์ฌ์ฉ์ ์ธํฐ๋ ์
์ ์๋์ฐ๋ก๋ถํฐ ์ ๋ฌ๋ฐ์ ์ฒ๋ฆฌํ๋ ์ญํ ์ ํ๋ค. ์๋์ฐ์ ๋ทฐ์ฌ์ด๋ฅผ ์ค๊ณํด์ฃผ๋๊ฒ!

๋๋ต์ ์ผ๋ก ๊ตฌ์กฐ๋ ์ด๋ฌํ๋ฐ, UIWindowScene์ด ์ฌ๋ฌ UIWindow๋ฅผ ๊ฐ๋ ๊ฒ์ ๊ฐ ์ฐฝ์ด ๋ค๋ฅธ UIWindow์ ํ์๋ ๋ ๋ฐ์ํ๋ฉฐ, UIScreen์ด ์ฌ๋ฌ UIWindowScene์ ๊ฐ๋ ๊ฒ์ iOS ์ฑ์ด ์ฌ๋ฌ ์ฐฝ์ ์ง์ํ ๋ ๋ฐ์ํ๋ค.

์๋์ฐ๋ ํ๋์ ๋ทฐ์ปจ์ ๋ฃจํธ๋ทฐ๊ฑด์ผ๋ก ์ง์ ํ์ฌ ์ฐธ์กฐํ๋ค. ๋ฃจํธ ๋ทฐ ์ปจํธ๋กค๋ฌ๋ก ์ง์ ๋์ง ๋ชปํ ๋๋จธ์ง ๋ทฐ ์ปจํธ๋กค๋ฌ๋ค์ ๋ฃจํธ ๋ทฐ ์ปจํธ๋กค๋ฌ์ ๊ด๋ฆฌ ๋์์ผ๋ก ์ฐ๊ฒฐ๋๊ฑฐ๋ ํน์ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์ด์ด์ง๊ธฐ๋ ํ์ง๋ง๏ผ์ด๋ค์ ์๋์ฐ ๊ฐ์ฒด์ ์ง์ ์ ์ธ ๊ด๋ฆฌ๋์์ด ์๋๋ค.. ์๋์ฐ ๊ฐ์ฒด๋ ํญ์ ๋ฃจํธ ๋ทฐ ์ปจํธ๋กค๋ฌ๋ง์ ์ฐธ์กฐํ๋ค.
scene(:willConnectTo:options:): ์๋ก์ด Scene์ด ์์ฑ๋๊ณ ์๋์ฐ๊ฐ ์ฐ๊ฒฐ๋ ๋ ํธ์ถ. ์ฌ๊ธฐ์ Scene์ ๋ํ ์ด๊ธฐ ์ค์ ์ ์ํ
sceneDidDisconnect(:): Scene์ด ์์คํ
์์ ๋ถ๋ฆฌ๋ ๋ ํธ์ถ
sceneWillEnterForeground(:): Scene์ด ํฌ๊ทธ๋ผ์ด๋๋ก ์ง์
ํ๊ธฐ ์ง์ ์ ํธ์ถ
sceneDidEnterBackground(:): Scene์ด ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ๋ค์ด๊ฐ ๋ ํธ์ถ
sceneDidBecomeActive(:): Scene์ด ํ์ฑ ์ํ๊ฐ ๋์์ ๋ ํธ์ถ.
sceneWillResignActive(:): Scene์ด ๋นํ์ฑ ์ํ๋ก ์ ํ๋๊ธฐ ์ง์ ์ ํธ์ถ
์ฐธ๊ณ
https://developer.apple.com/documentation/uikit/view_controllers/managing_content_in_your_app_s_windows?ref=noah-ios.dev
https://noah-ios.dev/window-scene/