Deep_Dev
article thumbnail

์ƒ๋ช…์ฃผ๊ธฐ ( LifeCycle )

์ƒ๋ช…์ฃผ๊ธฐ๋ผ๋Š” ๊ฒƒ์€ ์•ฑ์˜ ์ตœ์ดˆ ์‹คํ–‰๋ถ€ํ„ฐ ์•ฑ์ด ์™„์ „ํžˆ ์ข…๋ฃŒ๋˜๊ธฐ๊นŒ์ง€ ์•ฑ์ด ๊ฐ€์ง€๋Š” ์ƒํƒœ์™€ ๊ทธ ์ƒํƒœ๋“ค ์‚ฌ์ด์˜ ์ „์ด๋ฅผ ๋งํ•œ๋‹ค.

์•ฑ์˜ ์ƒํƒœ๋Š” ์•ฑ์ด ํ˜„์žฌ ์–ด๋– ํ•œ ๊ฒƒ์„ ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.

 

์•ฑ์˜ ์ƒ๋ช…์ฃผ๊ธฐ ( App's Life Cycle )

App์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋Š” APP์˜ ์‹คํ–‰/์ข…๋ฃŒ ๋ฐ App์ด Foreground/Background ์ƒํƒœ์— ์žˆ์„ ๋•Œ, ์‹œ์Šคํ…œ์ด ๋ฐœ์ƒ์‹œํ‚ค๋Š” event์— ์˜ํ•ด App์˜ ์ƒํƒœ๊ฐ€ ์ „ํ™˜๋˜๋Š” ๊ณผ์ •์„ ๋งํ•œ๋‹ค.

 

์นด์นด์˜คํ†ก ์•ฑ์œผ๋กœ ์นดํ†ก์„ ํ•˜๊ณ  ์žˆ๋Š” ๋„์ค‘์— ์ „ํ™”๊ฐ€ ์™”์„ ๋•Œ ์•ฑ์ด ํ™”๋ฉด์ƒ์—์„œ ๋ณด์—ฌ์ง€์ง€ ์•Š๋Š” ์ƒํƒœ์ธ Background ์ƒํƒœ์™€

์•ฑ์ด ํ™”๋ฉด์— ์˜ฌ๋ผ์™€์žˆ๋Š” ์ƒํƒœ์ธ Foreground ๋“ฑ๊ณผ ๊ฐ™์€ ์ƒํƒœ๋“ค์„ ์ •์˜ํ•œ ๊ฒƒ์ด๋‹ค.

 


iOS์—์„œ ์•ฑ์„ ์‹คํ–‰ํ•˜๋ฉด ๋ฌด์Šจ ์ผ์ด ๋ฒŒ์–ด์งˆ๊นŒ ?

 

iOS์•ฑ์€ Objective - C ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•ฑ์€ main ํ•จ์ˆ˜์—์„œ ์‹œ์ž‘ํ•œ๋‹ค. ๋‹ค๋งŒ, iOS์˜ ํ•ต์‹ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ UIKit Framework๊ฐ€ main ํ•จ์ˆ˜๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•ฑ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ง์ ‘ main ํ•จ์ˆ˜์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. 

UIKit์€ main ํ•จ์ˆ˜๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ณผ์ •์—์„œ UIApplicationMain ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ์ด ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด UIApplication ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๋Š”๋ฐ, ์ด ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ์•ฑ ๊ฐœ๋ฐœ์ž๋Š” ์•ฑ์˜ ์‹คํ–‰์— ๋ถ€๋ถ„์ ์œผ๋กœ ๊ด€์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

์•ฑ์ด ์‹คํ–‰๋˜๋ฉด ๋ฐœ์ƒ๋˜๋Š” ์ด๋ฒคํŠธ ์ •๋ฆฌ

 

1. UIApplication ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋จ

2. @UIApplicationMain ๋˜๋Š” @Main ์–ด๋…ธํ…Œ์ด์…˜์ด ์žˆ๋Š” ํด๋ž˜์Šค๋ฅผ ์ฐพ์•„ AppDelegate ๊ฐ์ฒด ์ƒ์„ฑ

3. Main Event Loop๋ฅผ ์‹คํ–‰ ( touch, text input ๋“ฑ ์‚ฌ์šฉ์ž์˜ ์•ก์…˜์„ ๋ฐ›๋Š” ๋ฃจํ”„ )

 

 


Main Run Loop

๊ทธ๋ฆผ์œผ๋กœ ํ™•์ธํ•ด๋ณด์ž

Main Run Loop๋ผ๋Š” ๊ฒƒ์€ ์œ ์ €๊ฐ€ ์ผ์œผํ‚ค๋Š” ์ด๋ฒคํŠธ๋“ค์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์ด๋‹ค. UIApplication๊ฐ์ฒด๋Š” ์•ฑ์ด ์‹คํ–‰๋  ๋•Œ, Main Run Loop๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ด Main Run Loop๋ฅผ View์™€ ๊ด€๋ จ๋œ ์ด๋ฒคํŠธ๋‚˜ View์˜ ์—…๋ฐ์ดํŠธ์— ํ™œ์šฉํ•œ๋‹ค. ๋˜ํ•œ, Main Run Loop๋Š” View์™€ ๊ด€๋ จ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Main ์“ฐ๋ ˆ๋“œ์—์„œ ์‹คํ–‰๋œ๋‹ค.

์œ ์ €๊ฐ€ ์ผ์œผํ‚ค๋Š” ์ด๋ฒคํŠธ์˜ ์ฒ˜๋ฆฌ ๊ณผ์ •์„ ์ˆœ์„œ๋กœ ์ •๋ฆฌํ•˜์ž๋ฉด,

 

1. ์œ ์ €๊ฐ€ ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. ( ๋ฒ„ํŠผ ํ„ฐ์น˜, ํ™”๋ฉด ์Šค์™€์ดํ”„ ๋“ฑ )

2. ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ์ด๋ฒคํŠธ๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค. 

3. UIKit ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ port๋กœ ํ•ด๋‹น ์ด๋ฒคํŠธ๊ฐ€ ์•ฑ์œผ๋กœ ์ „๋‹ฌ๋œ๋‹ค. 

4. ์ด๋ฒคํŠธ๋Š” ์•ฑ ๋‚ด๋ถ€์ ์œผ๋กœ Queue์˜ ํ˜•ํƒœ๋กœ ์ •๋ฆฌ๋˜๊ณ  Event Queue์— ์Œ“์ธ๋‹ค.

5. Event Queue์— ์žˆ๋Š” ์ด๋ฒคํŠธ๋“ค์ด Main Run Loop์— ํ•˜๋‚˜์”ฉ ๋งคํ•‘๋œ๋‹ค.

6. UIApplication ๊ฐ์ฒด๋Š” ์ด ๋•Œ ๊ฐ€์žฅ ๋จผ์ € ์ด๋ฒคํŠธ๋ฅผ ๊ฐ์ฒด๋กœ ์–ด๋–ค ๊ฒƒ์ด ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋Š”์ง€ ๊ฒฐ์ •ํ•œ๋‹ค. 

 

 


์•ž์˜ ๋‚ด์šฉ๊นŒ์ง€ ์‚ฌ์šฉ์ž๊ฐ€ ์•ฑ์— ์ด๋ฒคํŠธ๋ฅผ ์ „๋‹ฌํ•œ ํ›„ 

์•ฑ์˜ ์‹คํ–‰๊นŒ์ง€ ์–ด๋–ค ๊ณผ์ •์„ ํ†ตํ•ด ์ด๋ค„์ง€๋Š”์ง€ ์•Œ์•„๋ณด์•˜๋‹ค.

 

์—ฌ๊ธฐ์„œ๋ถ€ํ„ฐ๋Š” iOS์•ฑ์˜ ์‹คํ–‰์ „ ์ƒํƒœ, ์‹คํ–‰ ํ›„ ์ƒํƒœ ๋“ฑ์„ ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ฒ ๋‹ค.

 

 

์•ฑ ์ƒํƒœ ( App State )

์•ฑ์˜ ์ƒํƒœ๋Š” ์ด 3๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„๋œ๋‹ค.

 

1. Not Running

์•ฑ์ด ์‹คํ–‰๋˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜, ์™„์ „ํžˆ ์ข…๋ฃŒ๋˜์–ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์ƒํƒœ

 

2. Inactive ( Foreground )

์•ฑ์ด ์‹คํ–‰๋˜๋ฉด์„œ Foreground์— ์ง„์ž…ํ•˜์ง€๋งŒ, ์–ด๋–ค ์ด๋ฒคํŠธ๋„ ๋ฐœ์ƒ๋˜์ง€ ์•Š์€ ์ƒํƒœ์ด๋‹ค.

์•ฑ์˜ ์ƒํƒœ ์ „ํ™˜๊ณผ์ •์—์„œ ์ž ๊น ๋จธ๋ฌด๋Š” ๋‹จ๊ณ„

 

3. active ( Foreground )

์•ฑ์ด ์‹คํ–‰์ค‘์ด๋ฉฐ, Foreground์— ์žˆ๊ณ , ์ด๋ฒคํŠธ๋ฅผ ๋ฐ›๊ณ  ์žˆ๋Š” ์ƒํƒœ์ด๋‹ค.

 

4. Background 

์•ฑ์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ์— ์žˆ์œผ๋ฉฐ, ๋‹ค๋ฅธ ์•ฑ์œผ๋กœ ์ „ํ™˜๋˜์—ˆ๊ฑฐ๋‚˜ ํ™ˆ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ๋ฐ–์œผ๋กœ ๋‚˜๊ฐ”์„ ๋•Œ์˜ ์ƒํƒœ์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฉœ๋ก  App์„ ์ผœ๋†“๊ณ  ๋‹ค๋ฅธ App์„ ์‚ฌ์šฉํ•ด๋„ ์žฌ์ƒํ•œ ์Œ์•…์ด ๊ณ„์† ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ์ด๋‹ค.

์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚˜ ์•ฑ์€ Suspened ์ƒํƒœ๋กœ ๋ฐ”๋€Œ๊ฒŒ ๋œ๋‹ค.

 

5. Suspened

์•ฑ์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ƒํƒœ์— ์žˆ์ง€๋งŒ, ์•„๋ฌด ์ฝ”๋“œ๋„ ์‹คํ–‰ํ•˜์ง€ ์•Š์€ ์ƒํƒœ์ด๋‹ค. 

๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ํŠน๋ณ„ํ•œ ์ž‘์—…์ด ์—†์„ ๊ฒฝ์šฐ Suspened์ƒํƒœ๊ฐ€ ๋œ๋‹ค. 

์ด ์ƒํƒœ์—์„œ ์•ฑ์€ ๋ฉ”๋ชจ๋ฆฌ์ƒ์— ์˜ฌ๋ผ๊ฐ€์žˆ์ง€๋งŒ ์•„๋ฌด ์ผ๋„ ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐํ„ฐ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. 

๋˜ํ•œ OS์— ์˜ํ•ด ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๋ฉด ์ด ์ƒํƒœ์˜ ์•ฑ์€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์—†์–ด์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ,

์ด๋Š” ๋”ฐ๋กœ ์•Œ๋žŒ์„ ํ•˜๊ฑฐ๋‚˜ ํ•˜์ง„ ์•Š๋Š”๋‹ค.

 


App Delegate ๊ฐ์ฒด์˜ ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ

์•ฑ์˜ ์ƒ๋ช…์ฃผ๊ธฐ ์ƒํƒœ์— ๋”ฐ๋ผ์„œ 

AppDelegate ๊ฐ์ฒด์˜ SceneDelegate์—์„œ ํŠน์ • ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ๋œ๋‹ค.

 


1. Not Running ์ƒํƒœ์ผ ๋•Œ

application(_:willFinishLaunchingWithOptions:)

์œ„ ๋ฉ”์†Œ๋“œ ์•ˆ์—๋Š” ์•ฑ์„ ์‹คํ–‰ํ•  ๋•Œ ์ตœ์ดˆ๋กœ ์‹คํ–‰ํ•  ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์ข‹๋‹ค.

ํ•„์š”ํ•œ ์ฃผ์š” ๊ฐ์ฒด๋“ค์„ ์ƒ์„ฑํ•˜๊ณ  ์•ฑ ์‹คํ–‰ ์ค€๋น„๊ฐ€ ๋๋‚˜๊ธฐ ์ง์ „์— ํ˜ธ์ถœ๋œ๋‹ค.

 

applicationDidFinishLaungching(_:)

์•ฑ ์‹คํ–‰์„ ์œ„ํ•œ ๋ชจ๋“  ์ค€๋น„๊ฐ€ ๋๋‚œ ํ›„ ํ™”๋ฉด์ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๊ธฐ ์ง์ „์— ํ˜ธ์ถœ๋œ๋‹ค. 

์ฃผ๋กœ ์ดˆ๊ธฐํ™” ์ฝ”๋“œ๋ฅผ ์ด๊ณณ์—๋‹ค ์ž‘์„ฑํ•œ๋‹ค.

 

applicationWillTrerminate(_:)

์•ฑ์ด ์ข…๋ฃŒ๋˜๊ธฐ ์ง์ „์— ํ˜ธ์ถœ๋œ๋‹ค.


2. In - Active ์ƒํƒœ์ผ ๋•Œ

 

sceneWillEnterForeground(_:)

์•ฑ์ด background๋‚˜ not running์—์„œ foreground๋กœ ๋“ค์–ด๊ฐ€๊ธฐ ์ง์ „์— ํ˜ธ์ถœ๋œ๋‹ค.

๋น„ํ™œ์„ฑํ™” ์ƒํƒœ๋ฅผ ๊ฑฐ์ณ ํ™œ์„ฑํ™” ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.

 

sceneWillResignActive(_:)

App Swithcer ๋ชจ๋“œ ( ํ™ˆ ๋ฐ” ์“ธ์–ด ์˜ฌ๋ ธ์„ ๊ฒฝ์šฐ ๋˜๋Š” ํ™ˆ ๋ฒ„ํŠผ ๋ชจ๋ธ ํ™ˆ๋ฒ„ํŠผ ๋‘๋ฒˆ ๋ˆŒ๋ €์„ ๊ฒฝ์šฐ )


3. Active ์ƒํƒœ ์ผ ๋•Œ

sceneDidBecomeActive(_:)

์•ฑ์ด ๋น„ํ™œ์„ฑํ™” ์ƒํƒœ์—์„œ ํ™œ์„ฑ์ƒํƒœ๋กœ ์ง„์ž…ํ•˜๊ณ  ๋‚œ ์งํ›„ ํ˜ธ์ถœ๋œ๋‹ค.

์•ฑ์ด ์‹ค์ œ๋กœ ์‚ฌ์šฉ๋˜๊ธฐ ์ „์—, ๋งˆ์ง€๋ง‰์œผ๋กœ ์ค€๋น„ํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.


4. Background ์ƒํƒœ ์ผ ๋•Œ

sceneDidEnterBackground(_:)

์•ฑ์ด background ์ƒํƒœ๋กœ ๋“ค์–ด๊ฐ”์„ ๋•Œ ํ˜ธ์ถœ๋œ๋‹ค.

suspened ์ƒํƒœ๊ฐ€ ๋˜๊ธฐ ์ „์— ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋“ฑ ์ข…๋ฃŒํ•˜๊ธฐ ์ „ ํ•„์š”ํ•œ ์ž‘์—…์„ ํ•œ๋‹ค.


5. Suspened ์ƒํƒœ์ผ ๋•Œ

๋”ฐ๋กœ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์†Œ๋“œ๋Š” ์—†์œผ๋ฉฐ background ์ƒํƒœ์—์„œ ํŠน๋ณ„ํ•œ ์ž‘์—…์ด ์—†์„ ๋•Œ ์ด ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.

 

 

 

 


iOS 12์™€ iOS 13์ด์ƒ๋ถ€ํ„ฐ ๋™์ž‘์˜ ์ฐจ์ด๊ฐ€ ์žˆ๋Š”๋ฐ, ๋จผ์ € iOS 12 ๊นŒ์ง€์˜ ๋™์ž‘์„ ์‚ดํŽด๋ณด๋ฉด,

 ~ iOS 12 : SceneDelegate ์—†์Œ

iOS 13 ~ : SceneDelegate ์žˆ์Œ

 

 

iOS 12๊นŒ์ง€์˜ ๋™์ž‘ ( Scene์„ ์ง€์› ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ )

 

iOS 12๊นŒ์ง€๋Š” SceneDelegate๊ฐ€ ์—†๋‹ค. ( iOS 13๋ถ€ํ„ฐ ์กด์žฌ )

Scene๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ๋ชจ๋“  ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ จ ์ด๋ฒคํŠธ๋“ค์€ appDelegate์— ์ „๋‹ฌ๋œ๋‹ค.

๊ฐ๊ฐ์˜ ์ƒํƒœ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ํŒŒ์ผ์ด AppDelegate.swift ์ด๋‹ค. 

iOS์•ฑ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด AppDelegate.swift ํŒŒ์ผ์ด ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜์–ด ์žˆ๋‹ค.

 

AppDelegate๋Š” ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ์•ฑ๊ณผ ์‹œ์Šคํ…œ์˜ ์—ฐ๊ฒฐ์„ ์œ„ํ•ด ํ•„์š”ํ•œ delegate ๋ฉ”์†Œ๋“œ๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค.

 

 


iOS 13๋ถ€ํ„ฐ์˜ ๋™์ž‘ ( Scene๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ )

SceneDelegate๋Š” iOS13๋ถ€ํ„ฐ ์ถ”๊ฐ€๋œ ํด๋ž˜์Šค์ด๋‹ค.

SceneDelegate๋Š” UI ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํด๋ž˜์Šค์ด๋‹ค. 

iOS12 ๊นŒ์ง€๋Š” ํ•˜๋‚˜์˜ ์•ฑ์ด ํ•˜๋‚˜์˜ ์œˆ๋„์šฐ(Window)๋งŒ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์—

AppDelegate ํด๋ž˜์Šค๊ฐ€ UI ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ๊นŒ์ง€ ํ–ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ iOS13๋ถ€ํ„ฐ ํ•˜๋‚˜์˜ ์•ฑ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์œˆ๋„์šฐ(Window)๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์—

UI์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ์ „๋‹ด ๊ด€๋ฆฌํ•ด์ค„ ํด๋ž˜์Šค๊ฐ€ ํ•„์š”ํ•ด์กŒ๋‹ค. 

์ด๋ฅผ ์œ„ํ•ด ์ถ”๊ฐ€๋œ ํด๋ž˜์Šค๊ฐ€ SceneDelegate์ด๋‹ค.

 

์ฆ‰, Scene๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ Scene๋ณ„๋กœ ๋ณ„๋„์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค.

scene ํ•˜๋‚˜๋Š” ๋””๋ฐ”์ด์Šค์—์„œ ๋Œ์•„๊ฐ€๋Š” ์•ฑ์˜ UI์ธ์Šคํ„ด์Šค ํ•˜๋‚˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

ํ•˜๋‚˜์˜ ์•ฑ์€ ์—ฌ๋Ÿฌ๊ฐœ์˜ scene์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ๋„์šฐ๊ฑฐ๋‚˜ ์ˆจ๊ธธ ์ˆ˜ ์žˆ๋‹ค.

 

์‚ฌ์šฉ์ž๋‚˜ ์‹œ์Šคํ…œ์ด ์ƒˆ๋กœ์šด scene๋ฅผ ๋งŒ๋“ค์–ด๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•˜๋ฉด, UIKit์€ ์ด๋ฅผ ๋งŒ๋“ค์–ด unattahced ์ƒํƒœ๋กœ ๋งŒ๋“ ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ scene์€ ๊ณง์žฅ foreground inactive ์ƒํƒœ๋ฅผ ๊ฑฐ์ณ active์ƒํƒœ๊ฐ€ ๋˜๊ณ ,

์‹œ์Šคํ…œ์ด ์š”์ฒญํ•œ scene์€ ๋ณดํ†ต background ์ƒํƒœ๊ฐ€ ๋˜์–ด 

์ด๋ฒคํŠธ ์ฒ˜๋ฆฌํ•œ ๋’ค์— foreground๋กœ ์˜ฌ๋ผ์˜จ๋‹ค.

 

 


์ •๋ฆฌ

 

[ ์•ฑ์˜ ์ƒํƒœ 5๊ฐ€์ง€ ]

  • Not Running : ์•ฑ์ด ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ์ƒํƒœ
  • Inactive         : ์•ฑ์ด ์‹คํ–‰ ์ค‘์ธ ์ƒํƒœ, ๊ทธ๋Ÿฌ๋‚˜ ์•„๋ฌด๋Ÿฐ ์ด๋ฒคํŠธ๋ฅผ ๋ฐ›์ง€ ์•Š๋Š” ์ƒํƒœ
  • Active            : ์•ฑ์ด ์‹คํ–‰์ค‘์ด๋ฉฐ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์ƒํƒœ
  • Background  : ์•ฑ์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ์— ์žˆ๋Š” ์ƒํƒœ, ๊ทธ๋Ÿฌ๋‚˜ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š” ์ƒํƒœ
  • Suspened      : ์•ฑ์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ์— ์žˆ๊ณ  ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ๊ฐ€ ์—†๋Š” ์ƒํƒœ

 

 

[ delegate ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด, ์•ฑ์ด ํŠน์ • ์ƒํƒœ์—์„œ ๋™์ž‘ํ•˜๋Š” ๋กœ์ง ๊ตฌํ˜„ ]


// ์•ฑ์ด ์ฒ˜์Œ ์‹œ์ž‘๋  ๋•Œ ์‹คํ–‰
application (_: didFinishLaunching:)

// ์•ฑ์ด active์—์„œ inactive๋กœ ์ด๋™๋  ๋•Œ ์‹คํ–‰ 
applicationWillResignActive :

// ์•ฑ์ด background ์ƒํƒœ์ผ ๋•Œ ์‹คํ–‰
applicationDidEnterBackground:

// ์•ฑ์ด background์—์„œ foreground๋กœ ์ด๋™๋  ๋•Œ ์‹คํ–‰
// (์•„์ง foreground์—์„œ ์‹คํ–‰์ค‘์ด์ง„ ์•Š์Œ )
applicationWillEnterForeground:

// ์•ฑ์ด active์ƒํƒœ๊ฐ€ ๋˜์–ด ์‹คํ–‰์ค‘์ผ ๋•Œ
applicationDidBecomeActive:

// ์•ฑ์ด ์ข…๋ฃŒ๋  ๋•Œ ์‹คํ–‰
applicationWillTerminate: