layout | title | date | categories | tags | author | mathjax | comments |
---|---|---|---|---|---|---|---|
post |
Architecting Your App for Multiple Windows |
2019-11-06 21:26:06 +0900 |
iOS |
iOS Windows WWDC |
Juhee Kim |
true |
true |
- content {:toc}
iOS 13์์๋ถํฐ ๋ฉํฐ ์๋์ฐ๋ฅผ ์ง์ํฉ๋๋ค. ๊ธฐ์กด ์ฑ์ ๋์ฑ ์ ์ฉํ๊ฒ ๋ง๋ค๊ณ ์ฌ์ฉ์์ ์์ฐ์ฑ์ ํฌ๊ฒ ํฅ์์ํค๋ ํ์์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค. ์ด ์ธ์ ์ ๋ค์ ์ธ ๊ฐ์ง๋ฅผ ๋ค๋ฃน๋๋ค.
- Changes to app lifecycle
- Using them scene delegate :
UISceneDelegate
๋ฅผ ์์๋ณด๊ณ ์ด๋ค ์์ ์ ํด์ผํ๋์ง - Architecture: ๋ ๋์ ๋ฉํฐํ์คํน์ ์ํ
Architecture Kit
์ ๋ชจ๋ฒ์ฌ๋ก
- Application์ ํ๋ก์ธ์ค ๋ ๋ฒจ ์์ค ์ด๋ฒคํธ๋ฅผ ์๋ ค์ฃผ๋ ์ผ
- ์ฑ ์์/๋๊ธฐ/์ข ๋ฃ
- ๊ทธ ์ธ ๊ฐ์ข ๋ ธํฐ ์๋ ด
- Application์ UI ์ํ๋ฅผ ์๋ ค์ค
- ํฌ๊ทธ๋ผ์ด๋/๋ฐฑ๊ทธ๋ผ์ด๋ ์ด๋
- ResignActive/BecomeActive
iOS 12 ๋ฐ ์ด์ ๋ฒ์ ์์๋ ํ๋์ Application ํ๋ก์ธ์ค์ ํ๋์ UI ์ธ์คํด์ค๋ง ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ๊ด๊ณ์์ง๋ง, ๊ทธ ์ดํ์๋ ์ฌ๋ฌ ํ๋ฉด์ด ์กด์ฌํ ์ ์์ผ๋ฏ๋ก App Delegate
์ ์ญํ ๊ณผ ์ฑ
์์ด ๋ฐ๋์ด์ผ ํฉ๋๋ค.
- App Delegate : Application์ ํ๋ก์ธ์ค ๋ ๋ฒจ ์์ค ์ด๋ฒคํธ๋ฅผ ์๋ ค์ฃผ๋ ์ผ
- ์ฑ ์์/๋๊ธฐ/์ข ๋ฃ
- ๊ทธ ์ธ ๊ฐ์ข ๋ ธํฐ ์๋ ด
- ํ๋ฉด(scene)์ด ์์ฑ/์ญ์ ๋์์ ๋ ์๋ฆผ
- Scene Delegate : Application์ UI ์ํ๋ฅผ ์๋ ค์ค
- ํฌ๊ทธ๋ผ์ด๋/๋ฐฑ๊ทธ๋ผ์ด๋ ์ด๋
- ResignActive/BecomeActive
ํ์ง๋ง iOS 12 ๋ฐ ์ด์ ๋ฒ์ ์ ์ ์งํ๊ธฐ ์ํด์๋ AppDelegate ๋ก์ง์ ์ ์งํด์ผ ํฉ๋๋ค..!
App Delegate
didFinishLaunchingWithOptions(:)
- create
scene session
- configure
UIScene
- specify
UISceneDelegate
,Storyboard
,Subclass View
- ํน์ info.plist์์ ์ ์
- specify
Scene Delegate
willConeectToSession(:)
willResignActive
,didEnterBackground
didDisconnected
- ํ๋ฉด์ด ๋ฐฑ๊ทธ๋ผ์ด๋์ ๋ค์ด๊ฐ๋ฉด ์์คํ ์ ์ํด์ disconnected ๋ ์ ์๋ค.
- ๊ทธ๋์ ๋์ค์ ์ฐ๊ฒฐ๋ ๋๋ฅผ ๋๋นํด์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด์ผํ ํ์์ฑ์ด ์๋ค.
*
App Delegate
- ์ฌ์ฉ์๊ฐ ํ๋ฉด์ ์์ ๋ฉด
didDiscardSceneSession
์ด ํธ์ถ๋๋ค.
ํ๋ก์ธ์ค๊ฐ ์คํ์ค์ด ์๋ ๊ฒฝ์ฐ ์์คํ ์ discard๋ ์ธ์ ์ ์ถ์ ํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์คํ๋ ์งํ ์ด๋ฅผ ๋ค์ ํธ์ถํฉ๋๋ค.
์ฑ์ ํ๋ฉด์ด ์ฌ๋ฌ ๊ฐ๊ฐ ์ฌ์ฉ๋ ์ ์๊ธฐ ๋๋ฌธ์ ํ๋ฉด์ ๋ํ ๋ณต๊ตฌ๊ฐ ํ์ํฉ๋๋ค. ๋ง์ผ ์ํ ๋ณต์์ ๊ตฌํํ์ง ์์ผ๋ฉด ๋ฉํฐ ์๋์ฐ ์ํ์์ disconnect ๋ ํ ๋ค์ ์ฐ๊ฒฐ๋์์ ๋ ์์ ํ ์๋ก์ด ํ๋ฉด์ด ๋ฐ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ข์ง ์์ ๊ฒ์ ๋๋ค.
ํ์ง๋ง iOS 13์์๋ ์ด๋ฅผ ์ง์ํ๊ธฐ ์ํด State Restoration API๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉด์ ์ธ์ฝ๋ฉํ ์ ์์ผ๋ฉฐ ์ด๋ NSUserActivity
๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
- ์ด๋
spotlightsearch
๋handoff
์๋ ์ ์ฉํ ์ ์์ต๋๋ค. - session์ด stateRestorationActivity๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ฉด ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉด์ ๊ตฌ์ฑํ๊ณ , ๊ทธ๋ ์ง ์๋ค๋ฉด ์๋ก์ด ํ๋ฉด์ ๊ตฌ์ํ๋ฉด ๋ฉ๋๋ค.
๋ง์ฝ ์ฑํ ํ๋ฉด์ ์ฌ๋ฌ ๊ณณ์์ ๋์ด๋ค๋ฉด? ๊ฐ์ ์ฑํ ๋ฐฉ์ ์ฌ๋ฌ ์ฐฝ์์ ๋์ธ ๋ ๋๊ธฐํ ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด์ผํ ๊น์?
ViewController
๊ฐ ์ด๋ฒคํธ๋ฅผ ์์ ํ๋ฉดModel Controller
์ ๋ค์ ์ด๋ฒคํธ๋ฅผ ์ ๋ฌModel
์ ๊ตฌ๋ ํ๊ณ ์๋ ๊ตฌ๋ ์ ํน์View Controller
์๊ฒ ์๋ก์ด ๋ฐ์ดํฐ๊ฐ ์ ๋ฐ์ดํธ ๋์์์ ์๋ฆผ
์ค์ ๊ตฌํ ๋ฐฉ์์ผ๋ก๋ Delegate
์ Notification
, Swift Combine
์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- View Controller๊ฐ ์ค์ค๋ก View๋ฅผ ์ ๋ฐ์ดํธํ์ง ์๊ณ , Model์ด ์ ๋ฐ์ดํธ ๋จ์ ๋ฐ๋ผ View๊ฐ ์๋์ผ๋ก ์ ๋ฐ์ดํธ ๋๋๋ก ํด์ผํฉ๋๋ค.
์ฐ๋ฆฌ๋ AppDelegate
์ SceneDelegate
์ ์ฐจ์ด์ ๊ณผ ์ฑ
์์ ์ฐจ์ด์ ๋ํด ์ดํด ๋ณด์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ํ ๋ช ๊ฐ์ง ์ฃผ์ SceneDelegate``method
๋ฅผ ์์๋ณด๊ณ ์ฌ๊ธฐ์์ ์ด๋ค ์ข
๋ฅ์ ์์
์ ํด์ผํ๋์ง ์ดํด ๋ณด์์ต๋๋ค. ๋ํ iOS 13์์ ์ํ ๋ณต์์ด ์ค์ํ ์ด์ ์ ์๋ก์ด ์ฅ๋ฉด ๊ธฐ๋ฐ API๋ฅผ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด์๋ ์ค๋ช
ํ์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก, ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ ์์ฑํ๊ธฐ ์ํ ์ผ๋ถ ๊ณ ์์ค ํจํด์ ๋ํด ์ด์ผ๊ธฐํ๋ฉฐ, ๋ชจ๋ ์ฅ๋ฉด์ด ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๋ ๋์ ๋๊ธฐํ ์ํ๋ฅผ ์ ์งํ ์ ์๋๋ก ํ์์ต๋๋ค.