UIViewController๊ฐ€ init ๋˜๋Š” ์‹œ์ ์— ํŠน์ • View๋ฅผ ์„ค์ •ํ•˜๋ฉด ์•ˆ๋˜๋Š”๊ฐ€? ์™œ ์•ˆ๋˜๋Š”๊ฐ€?

ํ•ต์‹ฌ ์š”์•ฝ

  • UIViewController์˜ init์— View๋ฅผ ์„ค์ •ํ•˜๊ฒŒ ๋˜๋ฉด, ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ์œผ๋กœ ์ธํ•ด View๊ฐ€ ํ•ด์ œ๋˜๋Š” ์ƒํ™ฉ์— ๋Œ€์‘ํ•  ์ˆ˜ ์—†๋‹ค.
  • iOS ์‹œ์Šคํ…œ์€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•œ ๊ฒฝ์šฐ, ์ ˆ๋Œ€์ ์œผ๋กœ ์น˜๋ช…์ ์ด์ง€ ์•Š์€ ์ž์›์„ ํ•ด์ œํ•ด๋ฒ„๋ฆฐ๋‹ค.
  • ์ •ํ™•ํžˆ ๋งํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๊ฒฝ๊ณ  ๋ฐœ์ƒ > UIViewController ๊ฐ์ฒด ์•ˆ์˜ UIView ๊ฐ์ฒด๊ฐ€ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์ƒํƒœ์ด๋ฉด nil๋กœ ์„ค์ •๋œ๋‹ค.
  • ์ด ๋‹ค์Œ์—๋Š” ํ˜„์žฌ๋Š” deprecated๋œ viewDidUnload๊ฐ€ ํ˜ธ์ถœ๋˜์—ˆ์—ˆ๋‹ค.
  • ์ด ์ƒํ™ฉ์—์„œ ๋‹ค์‹œ viewController๊ฐ€ ํ™œ์„ฑํ™”๋œ๋‹ค๋ฉด ๋‹ค์‹œ viewDidLoad๊ฐ€ ํ˜ธ์ถœ๋˜๊ฒŒ ๋œ๋‹ค.
  • ํ•˜์ง€๋งŒ iOS6 ๋ถ€ํ„ฐ ๋”์ด์ƒ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ์ƒํ™ฉ์—์„œ View๊ฐ€ purge๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•œ๋‹ค.
  • ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ž์ฒด์ ์œผ๋กœ ๋Œ€์ฒ˜ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.
  • ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  viewDidLoad์—์„œ View๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ์˜ˆ์ „์—๋Š” iOS ๊ฐœ๋ฐœ ๊ธฐ๋ณธ ์งˆ๋ฌธ์ด์—ˆ์œผ๋‚˜, ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๊ฐ€ ์ปค์ง€๋ฉด์„œ ๋ฌป์ง€ ์•Š๋Š” ์ถ”์„ธ๊ฐ€ ๋˜์—ˆ๋‹ค.

didReceiveMemoryWarning

  • ๋ฉ”๋ชจ๋ฆฌ ๊ฒฝ๊ณ ๊ฐ€ ๋ฐœ์ƒํ• ์‹œ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค.
  • ์ง์ ‘์ ์œผ๋กœ ํ˜ธ์ถœ์•„๋ฉด ์•ˆ๋œ๋‹ค.
  • ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋ฅผ overrideํ•˜์—ฌ iOS 6 ์ด์ „์˜ ๋™์ž‘์ฒ˜๋Ÿผ ํ˜„์žฌ ๋ณด์ด์ง€ ์•Š๋Š” View์— ๋Œ€ํ•ด nil์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.
  • ์ฆ‰, ์ด์ „์—๋Š” ์‹œ์Šคํ…œ์—์„œ ์•Œ์•„์„œ ์•ˆ๋ณด์ด๋Š” ๋ทฐ๋ฅผ ํ•ด์ œ ์‹œ์ผฐ๋‹ค๋ฉด, ์ด์ œ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ƒํ™ฉ์— ๋งž์ถฐ ์ฒ˜๋ฆฌํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

viewDidLoad

  • View Hierachy๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋  ๋•Œ ํ˜ธ์ถœ๋œ๋‹ค.
  • ๋ฌธ์„œ์—์„œ๋„ ์ถ”๊ฐ€์ ์ธ View์˜ ์ดˆ๊ธฐํ™”๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด ํ•ด๋‹น ์‹œ์ ์— ํ•˜๋ผ๊ณ  ๋ช…์‹œ๋˜์–ด ์žˆ๋‹ค.

Reference