Skip to content

Latest commit

ย 

History

History
28 lines (19 loc) ยท 2.1 KB

Delegate,Notification.md

File metadata and controls

28 lines (19 loc) ยท 2.1 KB

Delegate์™€ Notification ๋ฐฉ์‹์˜ ์ฐจ์ด์ 

์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์€ ๊ธ€

ํ•จ๊ป˜ ๋ณด๋ฉด ์ข‹์€ ๋‹ต๋ณ€

Answer

Delegate, Notification๊ทธ๋ฆฌ๊ณ  KVO(Key Value Observing)๊นŒ์ง€ ์„ธ๊ฐ€์ง€ ํŒจํ„ด ๋ชจ๋‘ ํŠน์ • ์ด๋ฒคํŠธ๊ฐ€ ์ผ์–ด๋‚˜๋ฉด ์›ํ•˜๋Š” ๊ฐ์ฒด์— ์•Œ๋ ค์ฃผ์–ด ํ•ด๋‹น๋˜๋Š” ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

์ฐจ์ด์ 

  1. ์˜์กด๊ด€๊ณ„
  • Delegate๋Š” ์œ„์ž„๋˜๋Š” ๊ฐ์ฒด์™€ ์œ„์ž„ํ•˜๋Š” ๊ฐ์ฒด๊ฐ„์˜ 1:1 ๊ด€๊ณ„๋ฅผ ๋ˆ๋‹ค.
  • Notification์€ ์•Œ๋ฆผ์„ ๋ณด๋‚ด๋Š” ๊ฐ์ฒด์™€ ๋“ฑ๋ก๋œ ๊ฐ์ฒด๋“ค ๊ฐ„์˜ 1:n ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„๋‹ค.
  1. ์ž‘๋™
  • Delegate๋Š” ํŠน์ • protocol์„ ๊ตฌํ˜„ํ•จ์œผ๋กœ์จ ์œ„์ž„ํ•˜๋Š” ๊ฐ์ฒด์— ๋Œ€ํ•ด ์•Œ ํ•„์š” ์—†์ด ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ๋Œ€์‹  ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Notification์€ ํ•˜๋‚˜์˜ ๊ณต์œ ๋˜๋Š” default NotificationCenter ๊ฐ์ฒด์— observer๋ฅผ ๋“ฑ๋กํ•จ์œผ๋กœ์จ ์ •๋ณด๋ฅผ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธํ•˜๊ณ , observer๋“ค์€ ์ˆ˜๋™์ ์œผ๋กœ ์ •๋ณด๋ฅผ ๋ฐ›๋Š” ๊ฐœ๋…์ด๋‹ค. ํ•˜๋‚˜์˜ ๊ฐ์ฒด๊ฐ€ ์—ฌ๋Ÿฌ specificํ•œ notification๋“ค์— ๋Œ€ํ•ด ๊ฐœ๋ณ„์ ์œผ๋กœ ๋“ฑ๋ก์€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๊ฐ์ฒด๊ฐ€ ์›ํ•  ๋•Œ ํŠน์ • ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ฑฐ๋‚˜ ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜ฌ ์ˆ˜๋Š” ์—†๋‹ค.
  1. ์‚ฌ์šฉ
  • iOS์—์„œ Delegate๋Š” ์ฃผ๋กœ MVC ํŒจํ„ด์„ ๋งŒ์กฑํ•˜๊ธฐ ์œ„ํ•ด View์™€ ViewController ์‚ฌ์ด์—์„œ ์‚ฌ์šฉ๋˜๊ฑฐ๋‚˜, ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉ์ž๋“ค์ด ๋””ํ…Œ์ผํ•œ ๋‚ด์šฉ์„ ์•Œ์ง€ ๋ชปํ•˜๋”๋ผ๋„ ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ๋œ๋‹ค.
  • ๋ฐ˜๋ฉด Notification์€ ํŠน์ • ์ด๋ฒคํŠธ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐ์ฒด์— ์ „๋‹ฌ๋˜์–ด์•ผ ํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. register-> post-> receive์˜ ๊ฐ„๋‹จํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ observer๋“ค์ด ๋งŽ์•„์ง€๋ฉด ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๊ฐ์ฒด๋“ค๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ค์›Œ์ง„๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.