ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•

์˜ค๋Š˜์€ ๊ฐœ๋ฐœ์„ ํ•  ๋•Œ, ๋งŽ์ด ๋“ค์–ด๋ณธ ์•ฑ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ž€ ๋ฌด์—‡์ธ์ง€ ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

(๊ฐœ์ธ์ ์œผ๋กœ ๊ณต๋ถ€ ํ•œ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ๊ธฐ๋กํ•˜๊ธฐ์œ„ํ•ด ์ž‘์„ฑํ•˜๋Š” ๊ธ€์ด๊ธฐ ๋•Œ๋ฌธ์—, ์˜ค๋ฅ˜๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. )

.

.

.

 

์ผ๋‹จ ๊ธฐ๋ณธ์ ์œผ๋กœ iOS์—์„œ ์ƒ๋ช…์ฃผ๊ธฐ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ํ•  ๋•Œ iOS 13.0 ๋ฒ„์ „ ์ด์ „๊ณผ ์ดํ›„๋กœ ๋‚˜๋ˆ„์–ด์„œ ์„ค๋ช…์„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ทธ ์ด์œ ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€๋ฐ, 

 

iOS 13.0 ์ด์ „์—๋Š” Scene์ด๋ผ๋Š” ๊ฐœ๋…์ด App์œผ๋กœ ๋ถ€ํ„ฐ ๋ถ„๋ฆฌ๊ฐ€ ๋˜์ง€ ์•Š์•˜์ง€๋งŒ, ์ดํ›„ ๋ฒ„์ „ ๋ถ€ํ„ฐ๋Š” AppDelegate์™€ SceneDelegate๋กœ ๋ถ„๋ฆฌ๋˜์–ด ์„œ๋กœ ๋น„์Šทํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๊ฐœ๋…์„ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค.

 

์ด์ฒ˜๋Ÿผ AppDelegate์™€ SceneDelegate๊ฐ€ ํ•˜๋Š” ์—ญํ• ์ด ๋ถ„๋ฆฌ๊ฐ€ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, 

์ €๋Š” 13.0๋ฒ„์ „ ์ดํ›„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ž‘์„ฑํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 


 

์ƒ๋ช… ์ฃผ๊ธฐ๋ž€?

 

 

์ƒ๋ช…์ฃผ๊ธฐ๋ž€, ์‹คํ–‰๋ถ€ํ„ฐ ์ข…๋ฃŒ๋˜๊ธฐ ๊นŒ์ง€์˜ ์ฃผ๊ธฐ๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ App๊ณผ ์—ฐ๊ด€๋œ ์ƒ๋ช…์ฃผ๊ธฐ๋Š” AppDelegate์—์„œ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ณ 

Scene๊ณผ ์—ฐ๊ด€๋œ ์ƒ๋ช…์ฃผ๊ธฐ๋Š” SceneDelegate์—์„œ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

1) ๋ชจ๋ฐ”์ผ ์•ฑ์€ ํ™”๋ฉด์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜์˜ ํ™”๋ฉด์— ํ•˜๋‚˜์˜ ViewController๋งŒ์„ ๊ฐ€์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

2) ๊ทธ๋ ‡๊ฒŒ ์—ฌ๋Ÿฌ๊ฐœ์˜ ViewController๊ฐ€ ๋ชจ์—ฌ์„œ ํ•˜๋‚˜์˜ Application์„ ๋งŒ๋“ค๊ฒŒ ๋˜๋Š”๋ฐ,

3) ์ด๋•Œ ๊ฐ ๊ฐ์˜ ViewController๋Š” ์ž์‹ ๋งŒ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ 

4) ํ•ด๋‹น ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ View์˜ ์ „ํ™˜๊ณผ ๊ฐ™์€ Control์„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

 

 


 

Application Lifecycle๊ณผ ๊ด€๋ จ๋œ ์šฉ์–ด ์ •๋ฆฌ

 

์ƒ๋ช…์ฃผ๊ธฐ์— ๋Œ€ํ•ด ๊ณต๋ถ€๋ฅผ ํ•˜๋‹ค๋ณด๋ฉด, Delegate์™€ ๊ฐ™์ด, ๋“ค์–ด๋Š” ๋ดค์ง€๋งŒ ์˜๋ฏธ๋ฅผ ์ž˜ ์•Œ์ง€ ๋ชปํ•˜๋Š” ์—ฌ๋Ÿฌ ์šฉ์–ด๋ฅผ ์ ‘ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ํ•ด๋‹น ์šฉ์–ด๋“ค์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

 

.

.

 

Delegate๋ž€?

Delegate pattern์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ๋„ˆ๋ฌด ๋ฐฉ๋Œ€ํ•˜์—ฌ

๋”ฐ๋กœ ๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ์™€ ํ•จ๊ป˜ ์ •๋ฆฌํ•˜์—ฌ ๊ธ€์„ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค!

>> Delegate์— ๋Œ€ํ•˜์—ฌ

 

.

.

.

Scene์ด๋ž€? 

๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜๋ฉด, ๊ธฐ๊ธฐ์—์„œ ์‹คํ–‰์ค‘์ธ ์•ฑ UI์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

Scene์—๋Š” UI์˜ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” windows์™€ ViewController๊ฐ€ ๋“ค์–ด์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ, ๊ฐ Scene์—๋Š” UIKit๊ณผ App๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ์œ„ํ•œUIWindowSceneDelegate๊ฐ์ฒด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ 

ํ•˜๋‚˜์˜ App์˜ ์—ฌ๋Ÿฌ๊ฐœ์˜ Scene์€ ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ app process๊ณต๊ฐ„์„ ๊ณต์œ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด, ํ•˜๋‚˜์˜ Application์€ ๋™์‹œ์— ๋‹ค์–‘ํ•œ ์žฅ๋ฉด์„ ํ™œ์„ฑํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ฐธ์กฐ ์ด๋ฏธ์ง€

 

 


 

Application Lifecycle ์ด๋ž€?

 

์•ฑ ์ƒ๋ช…์ฃผ๊ธฐ๋ž€ App์˜ ์‹คํ–‰ ๋ถ€ํ„ฐ ์ข…๋ฃŒ๊นŒ์ง€์˜ ์ฃผ๊ธฐ๋ฅผ ๋งํ•˜๋Š”๋ฐ,

1) ์ „ํ™”๊ฐ€ ์™”์„ ๋•Œ์™€ ๊ฐ™์ด App์ด ํ™”๋ฉด์ƒ์—์„œ ์•ˆ๋ณด์ด๋Š” BackGround์ƒํƒœ,

2) ํ™”๋ฉด์— ์˜ฌ๋ผ์™€์žˆ๋Š” ForeGround์™€ ๊ฐ™์€ ์ƒํƒœ๋“ค์„ ์ •์˜ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

์ด์— ๋”ฐ๋ผ์„œ ์‹œ์Šคํ…œ ์•Œ๋ฆผ์— ์‘๋‹ตํ•˜๊ณ  ๋‹ค๋ฅธ ์ค‘์š”ํ•œ ์‹œ์Šคํ…œ ๊ด€๋ จ๋œ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋˜๊ณ ,

App์˜ ์ƒํƒœ๊ฐ€ ๋ฐ”๋€” ๋•Œ UIKit์€ ์ ์ ˆํ•œ Delegate๊ฐ์ฒด์˜ method๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์šฐ๋ฆฌ์—๊ฒŒ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

 

UISceneDelegate

- iOS 13.0์ด์ƒ ๋ฒ„์ „์—์„œ ์‚ฌ์šฉ

- Scene-based life-cycle event์— ์‘๋‹ต

 

UIApplicationDelegate

- iOS 12.0์ดํ•˜ ๋ฒ„์ „์—์„œ ์‚ฌ์šฉ

- App-based Lifecycle event์— ์‘๋‹ต

 

 


 

AppDelegate & SceneDelegate

[iOS 12.0 ์ด์ „]

iOS 12์™€ ๊ทธ ์ด์ „์— AppDelegate๋Š” 2๊ฐœ์˜ ์—ญํ• ์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

Process Lifecycle

Process ์ˆ˜์ค€์—์„œ์˜ event๋ฅผ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ system์€ AppDelegate์—๊ฒŒ process๊ฐ€ ์‹คํ–‰์ƒํƒœ์ธ์ง€, ์•„๋‹ˆ๋ฉด ์ข…๋ฃŒํ•˜๋ ค๊ณ  ํ•˜๋Š”์ง€์™€ ๊ฐ™์€ ์ •๋ณด๋ฅผ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

 

UI Lifecycle

UI์˜ State๋ฅผ ์•Œ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ didEnterForeground()์™€ ๊ฐ™์€ method๋ฅผ ํ†ตํ•ด์„œ ์‹œ์Šคํ…œ์€ UI์˜ State๋ฅผ ์•Œ๋ ค์ฃผ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

์ด๋Ÿฌํ•œ ๊ตฌ์กฐ๋Š” ํ•˜๋‚˜์˜ ์•ฑ์ด ํ•˜๋‚˜์˜ Process์™€ ํ•˜๋‚˜์˜ UI๊ฐ์ฒด์™€๋งŒ match๋˜์—ˆ๋˜

iOS 12.0 ์ด์ „๊นŒ์ง€๋Š” ๊ดœ์ฐฎ์•˜์Šต๋‹ˆ๋‹ค....

 

 

[iOS 13.0 ์ดํ›„]

ํ•˜์ง€๋งŒ, iOS 13.0์ดํ›„ ๋ถ€ํ„ฐ๋Š” App๋“ค์€ ์ด์ „์ฒ˜๋Ÿผ 1๊ฐœ์˜ process๋ฅผ ์‚ฌ์šฉํ•˜๊ธด ํ•˜์ง€๋งŒ,
๋‹ค์ˆ˜์˜ UI๊ฐ์ฒด๋‚˜ scene session
๋“ค์„ ๊ฐ€์ง€๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

์ด ๋ง์ด ๋ฌด์Šจ ๋ง์ด๋ƒ ํ•˜๋ฉด, ํ•˜๋‚˜์˜ ์–ดํ”Œ์„ ์‹คํ–‰ ํ•˜๋”๋ผ๋„ multiple window๋ฅผ ์ง€์›ํ•˜๊ฒŒ ๋˜๋ฉด์„œ

์—ฌ๋Ÿฌ๊ฐœ์˜ scene session์„ ๊ฐ€์ง€๊ฒŒ ๋˜์—ˆ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค!

์œ„ ์‚ฌ์ง„์— ์žˆ๋Š” ์ฒ˜๋Ÿผ calender๋ผ๋Š” ํ•˜๋‚˜์˜ App์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์ง€๋งŒ multiple window๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ๊ฐœ์˜ Scene session์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

 

์ด ๋ง์€, AppDelegate์˜ ์—ญํ•  ๋ณ€ํ™”๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ์˜๋ฏธ์ด๊ณ 

 

๊ทธ ๊ฒฐ๊ณผ AppDelegate๋Š” Process Lifecycle์˜ ์—ญํ• ์€ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜์ง€๋งŒ,

UI์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  ์ž‘์—…์—๋Œ€ํ•œ UI Lifecycle์˜ ์—ญํ• ์„ SceneDelegate์—๊ฒŒ ๋„˜๊ฒจ์ฃผ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

๋”ฐ๋ผ์„œ iOS 13์ดํ›„๋ถ€ํ„ฐ app์ด ์ƒˆ๋กœ์šด Scene lifecycle์„ ์ฑ„ํƒํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด,

UIKit์€ AppDelegate๋กœ๋ถ€ํ„ฐ UI state๊ด€๋ จ method๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š๊ฒŒ ๋˜๊ฒ ์ฃ ?

 

๋Œ€์‹ , ์•„๋ž˜ ์‚ฌ์ง„์— ์žˆ๋Š” ์ƒˆ๋กœ์šด SceneDelegate ํ•จ์ˆ˜๋“ค์„ ํ˜ธ์ถœํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค!!

 

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

๊ทธ๋ ‡์ง€ ์•Š๋‹ค์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋ฐฐํฌ๋ฅผ ํ•  ๋•Œ ์œ„์˜ 2๊ฐ€์ง€ ๊ฒฝ์šฐ์— ๋Œ€ํ•ด ๋ชจ๋‘ ์ž‘์„ฑ์„ ํ•˜๊ณ  ์œ ์ง€ํ•˜๋ฉด,

UIKit์ด ์•Œ์•„์„œ Runtime์ค‘์— ์•Œ๋งž์€ method๋ฅผ ํ˜ธ์ถœํ•  ๊ฒƒ์ด๋‹ค.

 

.

.

.

 

์ž, ์ •๋ฆฌ๋œ ๋‚ด์šฉ์„ ๋ณด๋ฉด UI Lifecycle์—ญํ• ์„ SceneDelegate๊ฐ€ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค๊ณ  ํ–ˆ์ฃ ?

 

๊ทธ๋ฆฌ๊ณ  AppDelegate๋Š” SceneSession์„ ํ†ตํ•ด Scene์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์—…๋ฐ์ดํŠธ ํ•˜๋Š” Session Lifecycle์ด ์ถ”๊ฐ€๋˜์—ˆ๋Š”๋ฐ ์ด SceneSession์€ ๊ณผ์—ฐ ๋ฌด์—‡์ผ๊นŒ์š”??

 

 

 


 

SceneSession์ด๋ž€?

 

UISceneSession ๊ฐ์ฒด๋Š” Scene์˜ ๊ณ ์œ ํ•œ ๋Ÿฐํƒ€์ž„ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ฒŒ๋ฉ๋‹ˆ๋‹ค.

 

user๊ฐ€ App์— ์ƒˆ๋กœ์šด Scene์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์‹œ์Šคํ…œ์€ ํ•ด๋‹น Scene์„ trackingํ•˜๊ธฐ ์œ„ํ•œ session๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, 

์ด๋Ÿฌํ•œ session์—๋Š” ํ•ด๋‹น scene์— ๋Œ€ํ•œ ๊ณ ์œ ์‹๋ณ„์ž์™€ ์„ธ๋ถ€๊ตฌ์„ฑ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.

 

๋˜ํ•œ, UIKit์€ scene ์ž์ฒด์˜ Lifetime ๋™์•ˆ session์˜ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๋ฉฐ, scene์„ ๋‹ซ๊ฒŒ ๋˜๋ฉด session์„ ์‚ญ์ œํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด ๋•Œ, ์ด๋Ÿฌํ•œ session์€ user๊ฐ€ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, UIKit์— ์˜ํ•ด ์ž๋™์œผ๋กœ scene์„ trackingํ•˜์—ฌ ์ƒ์„ฑํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

 

๋งŒ์•ฝ, ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ Scene์ด๋‚˜ Session์„ ์ƒ์„ฑํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, 

 

UIApplication์˜

requestSceneSessionActivation(_:userActivity:options:errorHandler:)

ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ UIKit์—๊ฒŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ์ƒˆ๋กœ์šด Scene๊ณผ Session์˜ ์ƒ์„ฑ์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

 

 

 


 

iOS 13 ์ดํ›„, AppDelegate์˜ ์—ญํ• 

 

1) ์•ฑ์˜ ์ค‘์•™ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ดˆ๊ธฐํ™”

2) ์•ฑ์˜ scene์„ ๊ตฌ์„ฑ (configuration)

3) ์•ฑ ๋ฐ–์—์„œ ๋ฐœ์ƒํ•œ ์•Œ๋ฆผ(๋ฐฐํ„ฐ๋ฆฌ ๋ถ€์กฑ, ๋‹ค์šด๋กœ๋“œ ์™„๋ฃŒ ๋“ฑ)์— ๋Œ€์‘

4) ์•ฑ์˜ scenes, views, view controller์— ํ•œ์ • ๋˜์ง€ ์•Š๊ณ  ์•ฑ ์Šค์Šค๋กœ๋ฅผ ํƒ€๊ฒŸํ•˜๋Š” ์ด๋ฒคํŠธ์— ๋Œ€์‘

5) ์•ฑ์ด ์‹œ์ž‘ํ•  ๋•Œ ์š”๊ตฌ๋˜๋Š” ๋ชจ๋“  ์„œ๋น„์Šค๋ฅผ ๋“ฑ๋ก

728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๋ฐ˜์‘ํ˜•
๋งํฌ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
Total
Today
Yesterday