๊ธ€ ์ž‘์„ฑ์ž: ๊ฐœ๋ฐœํ•˜๋Š” ํ›ˆ์ด

appDelegate์˜ ์ž„๋ฌด๊ฐ€ ๋ง‰์ค‘ํ–ˆ๋˜ ~ iOS 12

iOS 13์—์„œ Scene์ด ์†Œ๊ฐœ๋˜๊ณ  UI์™€ ๊ด€๋ จ๋œ ์ž‘์—…์ด ๋ชจ๋‘ sceneDelegate๋กœ ์ด๋™๋˜๊ธฐ ์ „๊นŒ์ง€, appDelegates๋Š” ์•ฑ์˜ ์ƒํƒœ์™€ UI์˜ ์ƒํƒœ๋ฅผ ๋ชจ๋‘ ๊ด€๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋‹จ ํ•˜๋‚˜์˜ ํ™”๋ฉด๋งŒ์„ ์ œ๊ณตํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— sceneDelegate์˜ ์กด์žฌ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์ด๋•Œ๊นŒ์ง€ ์•ฑ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋˜์—ˆ๋Š”์ง€ ํ•œ ๋ฒˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!

 

5๊ฐœ์˜ ์ƒํƒœ

https://developer.apple.com/documentation/uikit/app_and_environment/managing_your_app_s_life_cycle

 

iOS 12 ๊นŒ์ง€์˜ ์•ฑ์€ 5๊ฐœ์˜ ์ƒํƒœ๋กœ ๋‚˜๋ˆ„์–ด์ง‘๋‹ˆ๋‹ค. Not running, Inactive, Active, Background, Suspended ์ž…๋‹ˆ๋‹ค. 

 

์•ฑ์ด ์‹œ์ž‘๋  ๋•Œ

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹œ์ž‘๋˜๋ฉด ์‹œ์Šคํ…œ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ Inactive๋‚˜ background ์ƒํƒœ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋‘ ์ƒํƒœ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ UI๊ฐ€ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚˜๋Š”์ง€ ์—ฌ๋ถ€์— ๋”ฐ๋ผ์„œ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์‹คํ–‰ํ•œ ์งํ›„์— ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๊ณ„์† ์‹คํ–‰๋˜๋Š” ์•ฑ์ด๋ผ๋ฉด, Background ์ƒํƒœ๊ฐ€ ๋˜๊ณ , ํ™”๋ฉด์ด ์ „ํ™˜๋˜์–ด ์•ฑ์ด ํ™”๋ฉด์— ๋ณด์ด๊ฒŒ๋˜๋Š” ์•ฑ์ด๋ผ๋ฉด Inactive ์ƒํƒœ๊ฐ€ ๋˜๊ฒ ์ฃ ?

 

Active <-> Inactive

๊ทธ๋ฆฌ๊ณ  ํ™”๋ฉด์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๊ทธ๋ ค์ง€๊ณ  Inactive ์ƒํƒœ๊ฐ€ ๋œ ์ดํ›„์—๋Š” Active ์™€ Inactive ์ƒํƒœ๊ฐ€ ๋ฐ˜๋ณต๋˜๋ฉฐ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์‹œ๋ฆฌ๊ฐ€ ๋ถˆ๋ฆฌ๊ฑฐ๋‚˜, ์ „ํ™”๋ฅผ ๋ฐ›๋Š” ๋“ฑ, ํ™”๋ฉด์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์˜ฌ๋ผ์™€ ์žˆ์ง€๋งŒ, ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‚˜ ์‹œ์Šคํ…œ์— ์˜ํ•ด ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ๊ฐ€ ๋˜๋ฉด Inactive ์ƒํƒœ๋กœ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค.

 

Suspended <-> Background <-> Inactive

ํ™”๋ฉด์ด ์‚ฌ์šฉ์ž์— ์˜ํ•ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์ด๋™ํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒํƒœ๋„ Background ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. Background ์ƒํƒœ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚˜์ง€๋Š” ์•Š์ง€๋งŒ, ์—ฌ์ „ํžˆ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ์ƒํƒœ์—์„œ ์•ฑ์ด ์ผ์ •์‹œ๊ฐ„๋™์•ˆ ๋” ์ด์ƒ ์‹คํ–‰๋˜์ง€ ์•Š์œผ๋ฉด  Suspended ์ƒํƒœ๋กœ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ Suspended ์ƒํƒœ๊ฐ€ ์•ฑ์˜ ์ข…๋ฃŒ๋ฅผ ์˜๋ฏธํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. Suspended ์ƒํƒœ์— ์žˆ๋˜ ์•ฑ์ด ์‚ฌ์šฉ์ž๊ฐ€ ํ™”๋ฉด์„ ๋‹ค์‹œ ์ „ํ™˜์‹œํ‚ค๋ฉด Inactive ์ƒํƒœ๋กœ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋•Œ๋ฌธ์— ์œ„ ๊ทธ๋ฆผ์—์„œ๋„ Suspended์—์„œ Inactive๋กœ ๊ฐ€๋Š” ํ™”์‚ดํ‘œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ด์ฃ !

 

์•ฑ์ด ์ข…๋ฃŒ๋˜๋Š” ์‹œ์ ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์•ฑ์„ ์ข…๋ฃŒ์‹œํ‚ค๊ฑฐ๋‚˜, ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด suspended ์ƒํƒœ์— ์žˆ๋˜ ์•ฑ์„ iOS ์‹œ์Šคํ…œ์ด ์ข…๋ฃŒ์‹œ์ผฐ์„ ๋•Œ์ž…๋‹ˆ๋‹ค! 

๋งˆ๋ฌด๋ฆฌ

iOS 13์—์„œ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ์ •๋ฆฌํ•ด์„œ ๊ทธ๋Ÿฐ์ง€ ๊ฑฐ์˜ ์ผ์น˜ํ•˜๋Š” ๊ฐœ๋…์— ์šฉ์–ด๋งŒ ์กฐ๊ธˆ์”ฉ ๋‹ฌ๋ผ์ ธ์„œ ํฐ ์–ด๋ ค์›€์—†์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. iOS 12 ์ด์ „์œผ๋กœ ์•ฑ์„ ๊ฐœ๋ฐœํ•  ์ƒํ™ฉ์ด ์žˆ์„์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ(์ด์ œ iOS 15๊ฐ€ ๊ณง ๋‚˜์˜ค๋‹ˆ๊นŒ์š”) ๊ทธ๋ž˜๋„ ์•Œ์•„๋‘๋ฉด ์–ธ์  ๊ฐ€ ์“ธ ๋ฐ๊ฐ€ ์žˆ๊ฒ ์ฃ ! ์˜ค๋Š˜๋„ ์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!