๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
iOS ๐ŸŽ/iOS

viewController life cycle

by yongmin.Lee 2021. 1. 27.

โ€‹

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰ํ•˜๋ฉด์„œ ViewController๋“ค์ด ๋งŒ๋“ค์–ด์ง€๊ณ  ์‚ฌ๋ผ์ง€๋ฉฐ ํ™”๋ฉด์„ ๋„์šฐ๊ณ  ๋‚ด๋ฆฌ๋Š” ์ž‘์—…์„ ํ•˜๋Š”๋ฐ, ์ด๋Ÿฌํ•œ ๊ณผ์ •๋“ค์€ event์— ์˜ํ•ด ๋ฉ”์†Œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

โ€‹

โ€‹

Init()

storyboard๋ฅผ ํ†ตํ•ด View Controller๋“ค์„ ๋งŒ๋“ค ๊ฒฝ์šฐ ViewController ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ์ดˆ๊ธฐํ™” ์ž‘์—…์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ init() ์ž…๋‹ˆ๋‹ค. ๊ฐ์ฒด๋ฅผ Byte Stream์œผ๋กœ ๋ฐ”๊พธ์–ด ๋””์Šคํฌ์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ „์†กํ•˜๋Š” ์ง๋ ฌํ™” ์ž‘์—…์„ ํ•˜์ง€ ์•Š๋Š” ์ด์ƒ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋„˜์–ด์˜ค๋Š” NSCoder ๋Š” ๋ฌด์‹œํ•˜์…”๋„ ๋ฌด๋ฐฉํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๋งŒ์•ฝ View ๋‚ด์˜ ์š”์†Œ๋ฅผ ์ ‘๊ทผํ•œ๋‹ค๋ฉด ์ด๋Š” ์•„์ง ์ƒ์„ฑ๋˜๊ธฐ ์ „ ์ƒํƒœ์ด๊ธฐ์— ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

โ€‹

์ด์™ธ์—๋„ init(nibName: bundle:) ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋Š” nib ํŒŒ์ผ๋กœ ๋”ฐ๋กœ ๊ด€๋ฆฌํ•  ๊ฒฝ์šฐ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.

โ€‹

LoadView()

ํ™”๋ฉด์— ๋„์–ด์งˆ View๋ฅผ ๋งŒ๋“œ๋Š” ๋ฉ”์†Œ๋“œ์ž…๋‹ˆ๋‹ค. ์ด๋Š” outlet๊ณผ action๋“ค์ด ์ƒ์„ฑ๋˜๊ณ  ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

โ€‹

ViewDidLoad()

ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ๋Š” View์—์„œ ์ƒ์„ฑ๋œ outlet์ด ๋ฉ”๋ชจ๋ฆฌ์— ์œ„์น˜๋˜์–ด ์žˆ๊ธฐ์—, ์‚ฌ์šฉ์ž์—๊ฒŒ ํ™”๋ฉด์ด ๋ณด์—ฌ์ง€๊ธฐ ์ „ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ์ž…ํ•˜๋Š” ํ–‰์œ„๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ™”๋ฉด์ด Load ์ „ Background์—์„œ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์ž‘์—…๋“ค์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. (ex) Network)

โ€‹

๋˜ํ•œ ์ด๋Š” ViewController์—์„œ ๋”ฑ ํ•œ ๋ฒˆ๋งŒ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ๋ฒˆ๋งŒ ์ผ์–ด๋‚  ํ•ด์šฐ์ด๋“ค์€ ํ•ด๋‹น ๋ฉ”์†Œ๋“œ ์•ˆ์—์„œ ์ •์˜ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

โ€‹

ViewWillAppear()

ViewController์˜ ํ™”๋ฉด์ด ์˜ฌ๋ผ์˜ค๊ณ  ๋‚œ ์ดํ›„ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. UI ๋‚ด์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์‹คํ–‰์‹œํ‚ค๊ฑฐ๋‚˜, ์†Œ๋ฆฌ ์žฌ์ƒ, ๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋Š” ํ™”๋ฉด ์ „ํ™˜์„ ํ†ตํ•ด ๋‹ค์‹œ ๋Œ์•„์˜ฌ ๋•Œ๋„ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

โ€‹

ViewDidAppear()

ViewController์— View์™€ ๋ฐ์ดํ„ฐ๊ฐ€ ์™„์ „ํžˆ ๋‚˜ํƒ€๋‚  ๋•Œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์‹คํ–‰ํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์„ ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ์›น ์„œ๋น„์Šค ํ˜ธ์ถœ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ, Waiting Message๋ฅผ ๋›ฐ์šธ ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

โ€‹

ViewWillDisappear()

๋‹ค์Œ ViewController๋กœ ํ™”๋ฉด์ด ์ „ํ™˜๋˜๊ธฐ ์ „, ์ด์ „ ViewControoler๊ฐ€ ํ™”๋ฉด์—์„œ ์‚ฌ๋ผ์งˆ ๋•Œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ด์ „ ์ž‘์—…์„ ์ €์žฅํ•ด์•ผํ•˜๊ฑฐ๋‚˜ ๋ฐฑ์—…์„ ํ•ด์•ผํ•  ๊ฒฝ์šฐ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.

โ€‹

ViewDidDisappear()

ViewController๋“ค์ด ํ™”๋ฉด์—์„œ ์‚ฌ๋ผ์ง€๊ณ  ๋‚˜์„œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ํ™”๋ฉด์—์„œ ViewController๊ฐ€ ์‚ฌ๋ผ์ง„ ํ›„, ๋ฉˆ์ถฐ์•ผํ•  ์ž‘์—…๋“ค์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” override๋‚˜ super ํ‚ค์›Œ๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

โ€‹

Deinit()

ViewController๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‚ฌ๋ผ์ง€๊ธฐ ์ „ ํ•ด๋‹น ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฉ”์†Œ๋“œ๋ฅผ ํ• ๋‹น ๋ฐ›์€ ์ž์› ์ค‘, ARC์— ์˜ํ•ด ํ•ด์ง€๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ž์›๋“ค์„ ํ•ด์ œํ•˜๊ธฐ ์œ„ํ•ด override ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, Background์—์„œ ๋Œ๋ฆฌ๊ธฐ ์œ„ํ•ด ์ด์ „ ๋ฉ”์†Œ๋“œ์—์„œ ๋ฉˆ์ถ”์ง€ ๋ชปํ–ˆ๋˜ ์ด๋ฒคํŠธ๋“ค์„ ๋ฉˆ์ถœ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

'iOS ๐ŸŽ > iOS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Delegation Pattern  (0) 2021.02.17
Design Pattern  (0) 2021.02.16
View hierarchy  (0) 2021.02.16
AutoLayout  (0) 2021.02.16
Cocoa Touch  (0) 2021.02.16