Protocol
ํน์ ์ญํ ์ ํ๊ธฐ ์ํ ๋ฉ์๋, ํ๋กํผํฐ, ๊ธฐํ ์๊ตฌ์ฌํญ ๋ฑ์ ์ฒญ์ฌ์ง ์ฆ, ์๋ก ๊ฐ์ ์ง์ผ์ผ ํ ์ฝ์
- ํด๋์ค, ๊ตฌ์กฐ์ฒด, ์ด๊ฑฐํ์ ์ํด ์ฑํ๋๋ฉฐ, ํด๋น ๊ฐ์ฒด๋ค์ด ํ๋กํ ์ฝ์ ์ ์๋ ์๊ตฌ์ฌํญ์ ์ค์ ๊ตฌํ์ ์ ๊ณต
- ํ๋กํ ์ฝ์ ์ ์๋ฅผ ํ๊ณ ์ ์๋ฅผ ํ ๋ฟ ์ค์ค๋ก ๊ธฐ๋ฅ ๊ตฌํ X (์กฐ๊ฑด๋ง ์ ์)
๐Delegate Pattern
๊ฐ์ฒด๊ฐ ์์ ์ ์ฑ ์์ ๋ค๋ฅธ ๊ฐ์ฒด์๊ฒ ์์(delegate)ํ๋ ๋์์ธ ํจํด
- ๋ ๊ฐ์ฒด๋ฅผ ์ฐ๊ฒฐํด ๋ ๊ฐ์ฒด๊ฐ ํจ์จ์ ์ผ๋ก ์ํตํ ์ ์๋๋ก ๋์์ฃผ๋ ๊ฒ
- ์ด๋ฒคํธ๋ฅผ ๋ฐ์ ๊ฐ์ฒด์ ๊ทธ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๊ฒฝ์ฐ ์์ฃผ ์ฌ์ฉ
- delegate ๊ฐ์ฒด๋ฅผ weak์ผ๋ก ์ ์ธ ( โต delegate ๊ฐ์ฒด๊ฐ ์๋ฉธ๋ ๋ ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ๋ฐฉ์ง)
- ํ๋กํ ์ฝ๋ก ๊ตฌํ๋จ
Delegate Pattern์ ํ๋กํ ์ฝ์ ํตํด ๊ตฌํํ๋ ์ด์ ๋ ๋ฌด์์ผ๊น?
- ์๊ตฌ์ฌํญ ์ ์(ํ์ ๋ฉ์๋)
- ํ๋กํ ์ฝ์ ํตํ ๋คํ์ฑ ๊ตฌํ
- ํ๋กํ ์ฝ์ ์ฑํ ํ ์ ํ์ฌํญ ๋ฉ์๋ ๊ตฌํ ๊ฐ๋ฅ
- ํ์ ์์ ์ฑ ํ๋ณด
- ์ฌ๋ฌ ๋ฒ์ ์์ ๊ฐ๋ฅ์ผ๋ก ์ฌ์ฌ์ฉ์ฑ ์ฆ๊ฐ
- ์บก์ํ ๋ฐ ์ถ์ํ
๐Delegate Pattern ๊ตฌ์ฑ
์์์๋ค์ ์ผ์ ์ํค๊ธฐ๋ง ํ ๋ฟ, ์ผ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ผํ๋์ง ๋ชจ๋ฆ ์ผ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋๋ฆฌ์(๊ทธ ์ผ์ ์ํํ๋ ๊ฐ์ฒด)์ ๊ตฌํ๋์ด ์์ โ ์์์๋ ์ด๋ค ์ผ์ ํด์ผ ํ๋์ง ์ ํด๋๊ธฐ๋ง ํ๊ณ ๋๋ฆฌ์์ ๋ฐ๋ผ ๊ฐ์์ ๋ฐฉ๋ฒ๋๋ก ์ผ์ ์ฒ๋ฆฌํ๋ฉด ๋จ
๐์์ ์์์ : ๋ ๋๋ ธ์ด o0o ๋๋ฆฌ์ ๋๋ค background ์๊น ๋ฐ๊ฟ!! ๋๋ฆฌ์1 : ๋๋ ํ๋์์ผ๋ก ๋ฐ๊ฟ์ผ์ง^ใ ก^ ๋๋ฆฌ์2 : ๋๋ ๋ ธ๋์์ผ๋ก ๋ฐ๊ฟ์ผ์ง~
๐Delegate Protocol
ํด์ผ ํ ์ผ์ ๋ชฉ๋ก
Sender๊ฐReceiver์๊ฒ ์ ๋ฌํ ๋ด์ฉ์ ์ ์
๐Sender(์์์)
์ผ์ ์ํค๋ ๊ฐ์ฒด
- ์ ์ ์์ ์ปค๋ฎค๋์ผ์ด์ ์ ํตํด ๊ฐ์ข ์ด๋ฒคํธ๋ฅผ ๋ฐ์
๐Receiver(๋๋ฆฌ์)
์ผ์ ํ๋ ๊ฐ์ฒด
Sender๋ฅผ ๋์ ํด ์์ ์ ์ฒ๋ฆฌํ ๋๋ฆฌ์
๐Delegate Pattern ๊ตฌํ
๐Apple Delegate Pattern
๐Custom Delegate Pattern
ViewController ๊ฐ์ ๋ฐ์ดํฐ ์ ๋ฌ์ ์ํด ์์ฃผ ๊ตฌํํด ์ฌ์ฉ (์ง์ ์ ์ผ๋ก ๋ฐ์ดํฐ ์ ๋ฌ ์, ๋ VC์ ์๊ด๊ด๊ณ๊ฐ ๊น์ด์ ธ ์ํฅ์ ์ค ์ ์์)