Open Taehyeon-Kim opened 2 years ago
iOS 13์์ ์ฌ๋ฌ ์ฐฝ(Multiple Windows)๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ์์ฉ ํ๋ก๊ทธ๋จ ์๋ช ์ฃผ๊ธฐ(App Lifecycle)์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํ ๊ฐ์๋ฅผ ์ดํด ๋ณด๋ ๊ฒ๋ถํฐ ์์ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์์ UISceneDelegate์ ๋ํด ๋ ๊น์ด ํ๊ณ ๋ค์ด ๊ทธ๊ณณ์์ ์ด๋ค ์ข ๋ฅ์ ์์ ์ ์ํํด์ผ ํ๋์ง์ ๋ํด ์ด์ผ๊ธฐ ํฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก ArchitectureKit์ ๋ช ๊ฐ์ง ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ดํด๋ด ๋๋ค.
didEnterForeground, willResignActive์ ๊ฐ์ ๋ฉ์๋๋ฅผ ํตํด ์์คํ ์ UI ์ํ์ ๋ํด ์๊ฒ ๋ฉ๋๋ค. iOS 12์ ๊ทธ ์ด์ ๋ฒ์ ์์๋ ์ ํ ๋ฌธ์ ๊ฐ ๋์ง ์์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋์ ํ๋ก์ธ์ค์ ํ๋์ UI ์ธ์คํด์ค๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ฑ์ด Launching์ ๋ง์น ์ดํ์, ํด๋น ๋ฉ์๋์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ๊ฑฐ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ด๊ธฐํ ํ๋ ๊ฒ๊ณผ ๊ฐ์ one-time, non-UI (์ผํ์ฑ, ๋น UI) ์ ์ญ ์ค์ ์ ์ํํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ดํ์ UI๋ฅผ ์ค์ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ iOS 13์์ ์ ํจํ์ง ์์ต๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ ์ผ๋ฐ์ ์ผ๋ก(๊ทธ๋ฆฌ๊ณ ์์ดํฐ์์) ํ๋์ ํ๋ก์ธ์ค๋ฅผ ๊ณต์ ํ์ง๋ง ์ฌ๋ฌ UI ์ธ์คํด์ค ๋๋ Scene Session์ ๊ฐ์ง ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. iOS 13๋ถํฐ ์์ดํจ๋์ ๋ค์ค ์ฐฝ ์ง์์ด ๊ฐ๋ฅํ๊ฒ ๋์์ฃ . ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ App Delegate์ ์ฑ ์์ด ๋ณ๊ฒฝ๋์ด์ผ ํ์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ด ์ญํ ์ด ๋ถ๋ฆฌ๋๊ฒ ๋์์ต๋๋ค.
AppDelegate์์ ์ํํ๋ ๋ชจ๋ UI ์ค์ ๋๋ ๋ถํด(tear down) ์์ ์ ์ด์ Scene Delegate์ ํด๋น ๋ฉ์๋๋ก ๋ง์ด๊ทธ๋ ์ด์ ๋์์ต๋๋ค. ์ค์ ๋ก iOS 13์์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ก์ด Scene Lifecycle์ ์ฑํํ๋ฉด UIKit์ UI ์ํ์ ๊ด๋ จ๋ App Delegate ๋ฉ์๋ ํธ์ถ์ ์ค์งํฉ๋๋ค. ๋์ ์ ๊ทธ๋ฆผ์ ์๋ ๊ฒ์ฒ๋ผ ์๋ก์ด Scene Delegate ๋ฉ์๋๋ค์ ํธ์ถํ๊ฒ ๋ฉ๋๋ค. (๋๋ถ๋ถ AppDelegate์ ์๋ ๋ฉ์๋์ 1:1 ๋งคํ์ด ๋ฉ๋๋ค.)
๊ฑฑ์ ํ์ง ๋ง์ธ์. ๋ค์ ๋ฐฐํฌ๋ฅผ ํ ๋ 2๊ฐ์ง ๊ฒฝ์ฐ์ ๋ฉ์๋ ์ธํธ๋ฅผ ๋ชจ๋ ์ ์งํ๋ฉด UIKit์ด ์์์ ๋ฐํ์์ ์ฌ๋ฐ๋ฅธ ์ธํธ๋ฅผ ํธ์ถํด์ค๋๋ค.