-
๋๋ฆฌ๊ฒ์ด์ ์ด๋ ์ผ๋ถ ํด๋์ค์ ์ฑ ์์ ๋ค๋ฅธ ํด๋์ค์ ์ธ์คํด์ค์๊ฒ ์์ ๋๋ ์ ๋ฌํ ์ ์๋ ๋์์ธํจํด์ ์๋ฏธํ๋ค.
-
์์
๋น์ ๊ณผ ๋ด๊ฐ ์ด์ฝ๋ฆฟ ์ฟ ํค๋ฅผ ๋ง๋ค์ด ์ ๋ฌํ๋ ํ์ ์ผ์์ด๋ผ๊ณ ์์ํด๋ณด์.
๋น์ ์ด ์ฟ ํค ์ ๋นต์ ๋ด๋นํ์ฌ ์ด๋ฅผ ์ํด ํ์ํ '์ฟ ํค ๋ฐ์ฃฝ ๋ง๋ค๊ธฐ' ์ผ์ ๋์๊ฒ ์์(delegate) ํ๋ค.
๋ด๊ฐ ๋์ฐ๋ฅผ ๋ง๋ค๊ณ ์ด๋ฅผ ๋น์ ์๊ฒ ์ ๋ฌํด์ฃผ๋ฉด ๋น์ ์ ๊ทธ๊ฒ์ ์ด์ฉํด์ ์ฟ ํค๋ฅผ ๋ง๋ค ์ ์๋ค.
์ด๋ ๋ช๊ฐ์ง ํต์ฌ ์ฌํญ์ ๋ํด ์์๋ณด์.
- ๋น์ ์ ์ฟ ํค๋ฅผ ๋ง๋๋ ์์ ์ ๋งก์๊ธฐ์ ๋์๊ฒ '์ฟ ํค ๋์ฐ ๋ง๋ค๊ธฐ' ์ ๋ฌด๋ฅผ ์์ํ๋ค.
- ๋๋ ์์๋ ์์ (์ฟ ํค ๋ฐ์ฃฝ ๋์ฐ ๋ง๋ค๊ธฐ)์ ๋ง์น๋ฉด ์ฟ ํค ๋ฐ์ฃฝ์ ๋น์ ์๊ฒ ์ ๊ณตํ๋ค.
- Cookie ๊ตฌ์กฐ์ฒด
struct Cookie {
var size: Int = 5
var hasChocoChips: Bool = false
}
- Bakery ํด๋์ค
class Bakery {
func makeCooke() {
cookie.size = 6
cookie.hasChocoChips = true
}
}
์ ์ฝ๋๋ฅผ ์ดํด๋ณด๋ฉด Bakery๋ผ๋ ํด๋์ค๋ ๋ด๋ถ์์ Cookie ๊ตฌ์กฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ cookie๋ฅผ ์์ฑํ๊ณ ์ผ๋ถ ์์ฑ์ ์ค์ ํ๋ makeCookie()๋ผ๋ ํจ์๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
์ด ์์ ์์ ์ฐ๋ฆฌ๋ ์ฟ ํค๋ฅผ ์ธ๊ฐ์ง ๋ฐฉ์์ผ๋ก ํ๋งคํ๋ ค๊ณ ํ๋ค.
- ์คํ๋ผ์ธ ๋ฒ ์ด์ปค๋ฆฌ ์ต์์ ํ๋งค
- ์จ๋ผ์ธ ๋ฒ ์ด์ปค๋ฆฌ ์น ์ฌ์ดํธ์์ ํ๋งค
- ์ ํต ์ ์ฒด ๋๋งค๋ฅผ ํตํ ํ๋งค
์ฟ ํค๋ฅผ ํ๋งคํ๋ ๊ฒ์ ์ฐ๋ฆฌ์ ์ฑ ์์ด ์๋์ง๋ง, ์ฟ ํค๋ฅผ ๋ง๋ค์ด ์ ๋ฌํ๋ ๊ฒ๊น์ง๋ ์ฐ๋ฆฌ์ ์ฑ ์์ด๋ค.
๋ฐ๋ผ์ ์ฟ ํค๋ฅผ ๋ง๋ค๊ณ ๋์ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ด ํ์ํ๋ค.
์ฒซ ๋ฒ์งธ, ์ฐ๋ฆฌ๋ Protocol์ ์ ์ํด์ผ ํ๋ค. ํ๋กํ ์ฝ ๋ด์๋ ์ฟ ํค๋ฅผ ํ๋งค์ฒ์ ์ ๋ฌํ๋ ์ฑ ์์ ๋ด์ฉ๋ค์ ์บก์ํํ๋ค.
BakeryDelegate ํ๋กํ ์ฝ ์์ cookieWasBaked๋ผ๋ ํจ์๊ฐ ์ ์ธ๋๊ณ , ์ด delegate ํจ์(=cookieWasBaked)๋ ์ฟ ํค๊ฐ ๊ตฌ์์ง ๋ ๋ง๋ค ํธ์ถ๋๋ค.
protocol BakeryDelegate {
func cookieWasBaked(_ cookie: Cookie)
}
๋ ๋ฒ์งธ, ์ delegate๋ฅผ ํด๋์ค ๋ด๋ถ์ ํตํฉํ๋ค.
class Bakery {
var delegate: BakeryDelegate?
func makeCooke() {
var cookie = Cookie()
cooke.size = 6
cookie.hasChocoChips = true
delegate?.cookieWasBaked(cookie)
}
}
๊ธฐ์กด Bakery ํด๋์ค์์ ๋ ๊ฐ์ง๊ฐ ์ถ๊ฐ๋์๋ค.
- BakeryDelegate ํ์ ์ delegate ํ๋กํผํฐ๊ฐ ์ถ๊ฐ๋์๋ค.
- ํจ์ cookieWasBaked()๊ฐ makeCookie() ํจ์ ๋ด๋ถ delegate์์ ํธ์ถ๋๋ค.
-
iOS ๊ฐ๋ฐ ํจํด ์ค ๊ฐ์ฅ ์ค์ํ ํจํด์ด๋ค. Apple framework๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ ๋ฐ๋์ ์์์ผ ํ ํจํด์ด๋ค.
-
iOS์์ ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ delegation์ ๊ตฌํํ๋ ๊ฒ์ ํด๋์ค๊ฐ ๋จ์ผ ์์๋ง์ ์ง์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
-
์ฆ, ํ๋์ ๋ถ๋ชจ ํด๋์ค๋ฅผ ์์๋ฐ๊ณ ๋๋ฉด ๋๋ ๋ค๋ฅธ ํด๋์ค๋ฅผ ์์๋ฐ์ ์ ์์ผ๋ฏ๋ก ๊ธฐ๋ฅ์ ๋ง๋ถ์ด๊ธฐ ์ ํ์ ์ด๋ค. ์ด๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด ๊ตฌํ ๊ฐ์์ ์ ํ์ด ์๋ ํ๋กํ ์ฝ์ ์ด์ฉํ์ฌ ํ์ํ ๋จ์๋ณ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
-
๊ฒฐ๋ก ์ ์ผ๋ก, ๊ฐ๋ฐ์ ์ ์ฐ์ฑ์ด ์ฆ๊ฐํ๋ค !!