Secret-Of-SwiftUI / SSDC22

๐Ÿคก ์‘~ ์งˆ๋ ค? deprecated ํ•˜๋ฉด ๊ทธ๋งŒ์ด์•ผ~
9 stars 0 forks source link

Architecting Your App for Multiple Windows #18

Open Taehyeon-Kim opened 2 years ago

Taehyeon-Kim commented 2 years ago

Dive into the details about what it means to support multitasking in iOS 13. Understand how previous best practices fit together with new ideas. Learn the nuances of structuring your application to support multiple windows, and how to instantiate your UI, handle windows coming and going, and manage your app's underlying window resources.

Taehyeon-Kim commented 2 years ago

3๊ฐ€์ง€ ์ฃผ์š” ํ† ํ”ฝ

  1. Changes to app lifecycle (์•ฑ ๋ผ์ดํ”„ ์‚ฌ์ดํด์˜ ๋ณ€ํ™”)
  2. Using the scene delegate (Scene Delegate ์‚ฌ์šฉ)
  3. Architecture (๊ตฌ์กฐ ์„ค๊ณ„)

iOS 13์—์„œ ์—ฌ๋Ÿฌ ์ฐฝ(Multiple Windows)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์ƒ๋ช… ์ฃผ๊ธฐ(App Lifecycle)์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ๊ฐœ์š”๋ฅผ ์‚ดํŽด ๋ณด๋Š” ๊ฒƒ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ์— UISceneDelegate์— ๋Œ€ํ•ด ๋” ๊นŠ์ด ํŒŒ๊ณ ๋“ค์–ด ๊ทธ๊ณณ์—์„œ ์–ด๋–ค ์ข…๋ฅ˜์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐ ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ArchitectureKit์˜ ๋ช‡ ๊ฐ€์ง€ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.

1๏ธโƒฃ iOS 12 ๋ฐ ์ด์ „ ๋ฒ„์ „์—์„œ์˜ AppDelegate์˜ ์—ญํ• ๊ณผ ์ฑ…์ž„

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-07-12 แ„‹แ…ฉแ„’แ…ฎ 9 56 53

AppDelegate์˜ 2๊ฐ€์ง€ ์ฃผ์š” ์—ญํ• 

1. Process Lifecycle (ํ”„๋กœ์„ธ์Šค ์ˆ˜์ค€์˜ ์ด๋ฒคํŠธ๋ฅผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์•Œ๋ฆฌ๋Š” ๊ฒƒ)

2. UI Lifecycle

๋ฌธ์ œ์˜์‹ ๊ฐ€์ ธ๋ณด๊ธฐ

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-07-12 แ„‹แ…ฉแ„’แ…ฎ 10 04 27

didEnterForeground, willResignActive์™€ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ์€ UI ์ƒํƒœ์— ๋Œ€ํ•ด ์•Œ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. iOS 12์™€ ๊ทธ ์ด์ „ ๋ฒ„์ „์—์„œ๋Š” ์ „ํ˜€ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค์™€ ํ•˜๋‚˜์˜ UI ์ธ์Šคํ„ด์Šค๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์•ฑ์ด Launching์„ ๋งˆ์นœ ์ดํ›„์—, ํ•ด๋‹น ๋ฉ”์„œ๋“œ์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—ฐ๊ฒฐํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ดˆ๊ธฐํ™” ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ one-time, non-UI (์ผํšŒ์„ฑ, ๋น„ UI) ์ „์—ญ ์„ค์ •์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ดํ›„์— UI๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ iOS 13์—์„œ ์œ ํšจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Why?

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ผ๋ฐ˜์ ์œผ๋กœ(๊ทธ๋ฆฌ๊ณ  ์•„์ดํฐ์—์„œ) ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ณต์œ ํ•˜์ง€๋งŒ ์—ฌ๋Ÿฌ UI ์ธ์Šคํ„ด์Šค ๋˜๋Š” Scene Session์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. iOS 13๋ถ€ํ„ฐ ์•„์ดํŒจ๋“œ์— ๋‹ค์ค‘ ์ฐฝ ์ง€์›์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋˜์—ˆ์ฃ . ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— App Delegate์˜ ์ฑ…์ž„์ด ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์—ญํ• ์˜ ๋ถ„๋ฆฌ

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-07-12 แ„‹แ…ฉแ„’แ…ฎ 10 10 29 ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์—ญํ• ์ด ๋ถ„๋ฆฌ๋˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-07-12 แ„‹แ…ฉแ„’แ…ฎ 10 12 00

AppDelegate์—์„œ ์ˆ˜ํ–‰ํ–ˆ๋˜ ๋ชจ๋“  UI ์„ค์ • ๋˜๋Š” ๋ถ„ํ•ด(tear down) ์ž‘์—…์€ ์ด์ œ Scene Delegate์˜ ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ iOS 13์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ƒˆ๋กœ์šด Scene Lifecycle์„ ์ฑ„ํƒํ•˜๋ฉด UIKit์€ UI ์ƒํƒœ์™€ ๊ด€๋ จ๋œ App Delegate ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์„ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์‹ ์— ๊ทธ๋ฆผ์— ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ƒˆ๋กœ์šด Scene Delegate ๋ฉ”์„œ๋“œ๋“ค์„ ํ˜ธ์ถœํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. (๋Œ€๋ถ€๋ถ„ AppDelegate์— ์žˆ๋˜ ๋ฉ”์„œ๋“œ์™€ 1:1 ๋งคํ•‘์ด ๋ฉ๋‹ˆ๋‹ค.)

๊ทธ๋ ‡๋‹ค๋ฉด ๊ณผ์—ฐ iOS 13์ดํ›„์—์„œ multiple window๋ฅผ ์ง€์›ํ•˜๊ฒŒ ๋˜๋ฉด iOS 12 ์ด์ „ ์•ฑ๋“ค์€ ์ง€์›์„ ์ค‘๋‹จํ•ด์•ผ ํ• ๊นŒ์š”?

๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์„ธ์š”. ๋‹ค์‹œ ๋ฐฐํฌ๋ฅผ ํ•  ๋•Œ 2๊ฐ€์ง€ ๊ฒฝ์šฐ์˜ ๋ฉ”์„œ๋“œ ์„ธํŠธ๋ฅผ ๋ชจ๋‘ ์œ ์ง€ํ•˜๋ฉด UIKit์ด ์•Œ์•„์„œ ๋Ÿฐํƒ€์ž„์— ์˜ฌ๋ฐ”๋ฅธ ์„ธํŠธ๋ฅผ ํ˜ธ์ถœํ•ด์ค๋‹ˆ๋‹ค.

2๏ธโƒฃ Using the scene delegate (Scene Delegate ์‚ฌ์šฉ), App Call Stack

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-07-12 แ„‹แ…ฉแ„’แ…ฎ 10 19 38

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-07-12 แ„‹แ…ฉแ„’แ…ฎ 10 20 03

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-07-12 แ„‹แ…ฉแ„’แ…ฎ 10 23 16

image

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-07-12 แ„‹แ…ฉแ„’แ…ฎ 10 30 45

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-07-12 แ„‹แ…ฉแ„’แ…ฎ 10 34 23

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-07-12 แ„‹แ…ฉแ„’แ…ฎ 10 37 33

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-07-12 แ„‹แ…ฉแ„’แ…ฎ 10 48 28