Protocol

ํŠน์ • ์—ญํ• ์„ ํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์†Œ๋“œ, ํ”„๋กœํผํ‹ฐ, ๊ธฐํƒ€ ์š”๊ตฌ์‚ฌํ•ญ ๋“ฑ์˜ ์ฒญ์‚ฌ์ง„ ์ฆ‰, ์„œ๋กœ ๊ฐ„์˜ ์ง€์ผœ์•ผ ํ•  ์•ฝ์†

  • ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜•์— ์˜ํ•ด ์ฑ„ํƒ๋˜๋ฉฐ, ํ•ด๋‹น ๊ฐ์ฒด๋“ค์ด ํ”„๋กœํ† ์ฝœ์— ์ •์˜๋œ ์š”๊ตฌ์‚ฌํ•ญ์˜ ์‹ค์ œ ๊ตฌํ˜„์„ ์ œ๊ณต
  • ํ”„๋กœํ† ์ฝœ์€ ์ •์˜๋ฅผ ํ•˜๊ณ  ์ œ์‹œ๋ฅผ ํ•  ๋ฟ ์Šค์Šค๋กœ ๊ธฐ๋Šฅ ๊ตฌํ˜„ X (์กฐ๊ฑด๋งŒ ์ •์˜)

๐Ÿ“–Delegate Pattern

๊ฐ์ฒด๊ฐ€ ์ž์‹ ์˜ ์ฑ…์ž„์„ ๋‹ค๋ฅธ ๊ฐ์ฒด์—๊ฒŒ ์œ„์ž„(delegate)ํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด

  • ๋‘ ๊ฐ์ฒด๋ฅผ ์—ฐ๊ฒฐํ•ด ๋‘ ๊ฐ์ฒด๊ฐ€ ํšจ์œจ์ ์œผ๋กœ ์†Œํ†ตํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๊ฒƒ
  • ์ด๋ฒคํŠธ๋ฅผ ๋ฐ›์€ ๊ฐ์ฒด์™€ ๊ทธ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•  ๊ฐ์ฒด๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ ์ž์ฃผ ์‚ฌ์šฉ
  • delegate ๊ฐ์ฒด๋ฅผ weak์œผ๋กœ ์„ ์–ธ ( โˆต delegate ๊ฐ์ฒด๊ฐ€ ์†Œ๋ฉธ๋  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€)
  • ํ”„๋กœํ† ์ฝœ๋กœ ๊ตฌํ˜„๋จ

Delegate Pattern์„ ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ๊ตฌํ˜„ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ?

  1. ์š”๊ตฌ์‚ฌํ•ญ ์ •์˜(ํ•„์ˆ˜ ๋ฉ”์„œ๋“œ)
  2. ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•œ ๋‹คํ˜•์„ฑ ๊ตฌํ˜„
  3. ํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒ ํ›„ ์„ ํƒ์‚ฌํ•ญ ๋ฉ”์„œ๋“œ ๊ตฌํ˜„ ๊ฐ€๋Šฅ
  4. ํƒ€์ž… ์•ˆ์ •์„ฑ ํ™•๋ณด
  5. ์—ฌ๋Ÿฌ ๋ฒˆ์˜ ์ƒ์† ๊ฐ€๋Šฅ์œผ๋กœ ์žฌ์‚ฌ์šฉ์„ฑ ์ฆ๊ฐ€
  6. ์บก์Аํ™” ๋ฐ ์ถ”์ƒํ™”

๐Ÿ“–Delegate Pattern ๊ตฌ์„ฑ

์œ„์ž„์ž๋“ค์€ ์ผ์„ ์‹œํ‚ค๊ธฐ๋งŒ ํ•  ๋ฟ, ์ผ์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๋Š”์ง€ ๋ชจ๋ฆ„ ์ผ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋Œ€๋ฆฌ์ž(๊ทธ ์ผ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฐ์ฒด)์— ๊ตฌํ˜„๋˜์–ด ์žˆ์Œ โ†’ ์œ„์ž„์ž๋Š” ์–ด๋–ค ์ผ์„ ํ•ด์•ผ ํ•˜๋Š”์ง€ ์ •ํ•ด๋†“๊ธฐ๋งŒ ํ•˜๊ณ  ๋Œ€๋ฆฌ์ž์— ๋”ฐ๋ผ ๊ฐ์ž์˜ ๋ฐฉ๋ฒ•๋Œ€๋กœ ์ผ์„ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋จ
๐Ÿ”–์˜ˆ์‹œ ์œ„์ž„์ž : ๋‚˜ ๋ˆŒ๋ ธ์–ด o0o ๋Œ€๋ฆฌ์ž ๋„ˆ๋„ค background ์ƒ‰๊น” ๋ฐ”๊ฟ”!! ๋Œ€๋ฆฌ์ž1 : ๋‚˜๋Š” ํŒŒ๋ž€์ƒ‰์œผ๋กœ ๋ฐ”๊ฟ”์•ผ์ง€^ใ…ก^ ๋Œ€๋ฆฌ์ž2 : ๋‚˜๋Š” ๋…ธ๋ž€์ƒ‰์œผ๋กœ ๋ฐ”๊ฟ”์•ผ์ง€~

๐Ÿ“ŽDelegate Protocol

ํ•ด์•ผ ํ•  ์ผ์˜ ๋ชฉ๋ก

  • Sender๊ฐ€ Receiver์—๊ฒŒ ์ „๋‹ฌํ•  ๋‚ด์šฉ์„ ์ •์˜

๐Ÿ“ŽSender(์œ„์ž„์ž)

์ผ์„ ์‹œํ‚ค๋Š” ๊ฐ์ฒด

  • ์œ ์ €์™€์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์„ ํ†ตํ•ด ๊ฐ์ข… ์ด๋ฒคํŠธ๋ฅผ ๋ฐ›์Œ

๐Ÿ“ŽReceiver(๋Œ€๋ฆฌ์ž)

์ผ์„ ํ•˜๋Š” ๊ฐ์ฒด

  • Sender๋ฅผ ๋Œ€์‹ ํ•ด ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ๋Œ€๋ฆฌ์ž

๐Ÿ“–Delegate Pattern ๊ตฌํ˜„

๐Ÿ“ŽApple Delegate Pattern

  1. Delegate Pattern of TextField

๐Ÿ“ŽCustom Delegate Pattern

ViewController ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์„ ์œ„ํ•ด ์ž์ฃผ ๊ตฌํ˜„ํ•ด ์‚ฌ์šฉ (์ง์ ‘์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ์‹œ, ๋‘ VC์˜ ์ƒ๊ด€๊ด€๊ณ„๊ฐ€ ๊นŠ์–ด์ ธ ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Œ)

  1. Custom Delegate Pattern