protocl์ ํน์ ์ญํ ์ ํ๊ธฐ ์ํ ๋ฉ์๋, ํ๋กํผํฐ, ๊ธฐํ ์๊ตฌ์ฌํญ ๋ฑ์ ์ ์ํ๋ค. ํ๋กํ ์ฝ์ ์ ์๋ฅผ ํ๊ณ ์ ์๋ง ํ ๋ฟ, ์ค์ค๋ก ๊ธฐ๋ฅ์ ๊ตฌํํ์ง๋ ์๋๋ค. ํด๋์ค(๊ตฌ์กฐ์ฒด, ์ด๊ฑฐํ)์์ ์ฑํํ์ฌ์ ๋ฉ์๋๋ฅผ ๊ตฌํํด ์ค์ผ ํ๋ค.
์ฝ๊ฒ ๋งํด์ ์๋ก๊ฐ์ '์ฝ์'์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋ ๋ฏํ๋ค.
protocol ํ๋กํ ์ฝ๋ช {
ํ๋กํฐํผ๋ช
๋ฉ์๋ ์ ์ธ // ๋ฉ์๋๋ ์ ์ธ๋ง!
protocol ํ๋กํ ์ฝ๋ช : ๋ค๋ฅธ ํ๋กํ ์ฝ, ๋ค๋ฅธ ํ๋กํ ์ฝ2 {
// ํ๋กํ ์ฝ์ ๋ค์ค ์ฑํ๋ ๊ฐ๋ฅ
}
โ๏ธ protocol์ ์ ์๋ง ํ๋ ๊ฒ์ด๋ค! ๋ํ ํ๋กํ ์ฝ์ ์ฑํํ๋ฉด ์ค์(๊ตฌํ)์ ํด ์ฃผ์ด์ผ ํ๋ค. ๊ตฌํ์ ํด๋์ค๋ ๊ตฌ์กฐ์ฒด, ์ด๊ฑฐํ์์!!!
๋๋ฆฌ์, ์กฐ๋ ฅ์์ ์ญํ ์ ํ๋ค. ์ฝ๊ฒ ๋งํด์ ์ด๋ ํ ์ผ์ด ์์ ๋, delegateํํ ๋์ ์ผ์ ๋์ ๋ฌ๋ผ๊ณ ํ๋ฉด ํ๋์ ๊ฐ์ฒด๊ฐ ๋ชจ๋ ์ผ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์๋๋ผ, ์ฒ๋ฆฌํด์ผ ํ ์ผ ์ค ์ผ๋ถ๋ฅผ ๋ค๋ฅธ ๊ฐ์ฒด์์ ๋๊ธฐ๋ ๊ฒ์ด๋ค. delegate๋ ํ๋กํ ์ฝ๋ก ๊ตฌํ๋์ด ์๊ธฐ ๋๋ฌธ์, delegate๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ํ๋กํ ์ฝ์ ๋จผ์ ์์์ผ ํ๋ค.
๋ด๊ฐ ๋ง๋ค์๋ ์๊ธฐ์๊ฐ ์ฑ์์๋ ๋ก๋ฉ์ด ๊ฑธ๋ ธ์ ๋, ์์ง์ด๋ ์ ๋๋ฉ์ด์ ์ ๋ก๋ฉ๋ฐ๋ฅผ ํ์ํด ์ฃผ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ์๋ค.
์ด ๊ธฐ๋ฅ์ ํจ์๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์๋
1. ๋ก๋ฉ์ด ์๋ฃ๋์์ ๋์ ํจ์
2. ๋ก๋ฉ ์ค์ธ ํจ์
3. ๋ก๋ฉ์ ์คํจํ ํจ์
์ด ์ธ ๊ฐ์ง๋ฅผ ๊ตฌํํด ์ฃผ์ด์ผ ํ๊ณ , ๋๋ ์ด๊ฒ์ delegate๋ฅผ ์ฌ์ฉํด์ ๊ตฌํํด ๋ณด์๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด import๋ฅผ ํด ์ค๋ค.
๋๋ impoort Webkit์ ํด ์ฃผ์๋ค.
๋, WKNavagationDelegate ํ๋กํ ์ฝ์ ์ ์ธํด ์ฃผ์๋ค.
์ด ํ๋กํ ์ฝ์ ํ์ ๋ณ๊ฒฝ์ ์๋ฝํ๊ฑฐ๋ ๊ฑฐ๋ถํ๊ณ , ํ์ ์์ฒญ์ ์งํ ์ํฉ์ ์ถ์ ํ๋ ๋ฐฉ๋ฒ์ด๋ผ ์ ํ ์๋ค.
์ด ์ธ ๊ฐ์ ํจ์๋ฅผ ์ฌ์ฉํ์๋ค.
โ๏ธ ๋ง์ฝ ํ๋กํ ์ฝ์ ์ ์๋์ด์ ธ ์๋ ํจ์ ์ค์ required ํ์๊ฐ ๋์ด ์๋ ํจ์๋ ๋ฌด์กฐ๊ฑด ์ ์๋ฅผ ํด ์ฃผ์ด์ผ ํ๋ ํจ์๋ค.
์์ ์ฌ์ง์ฒ๋ผ required ํจ์๊ฐ ๋ถ์ด ์์ง ์๊ฑฐ๋, optional์ด ์์ ์ ์ธ๋์ด ์์ผ๋ฉด ํ์์ ๋ฐ๋ผ ์ฌ์ฉํ๋ฉด ๋๋ ํจ์.
delegate๋ฅผ ์ฌ์ฉํ ๋๋ ๊ผญ!!! ํด๋์ค์์ ๋ด๊ฐ ์ ์ธํ ์น๋ทฐ์๊ฒ ์์ (ํด๋์ค)์ด ๋ธ๋ฆฌ๊ฒ์ดํธ๋ผ๋ ๊ฒ์ ์ ์ธํ๋ ๊ฒ์ ์์ง ๋ง์์ฃผ์. ์ด ๊ณผ์ ์ด ์๋ค๋ฉด ๋ธ๋ฆฌ๊ฒ์ดํธ๋ ์คํ๋์ง ์๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ธ ๊ฐ์ ํจ์๋ค์ WKNavigationDelegate ์์ ์ ์๋์ด ์๋ ํจ์์ด๋ค. ์ด ๋์์ '๋์ 'ํด ์ค ํจ์๋ฅผ ๋ถ๋ฌ์์ ๊ทธ ํจ์ ์์ ํ๊ณ ์ ํ๋ ์ผ์ '๊ตฌํ'๋ง ํด ์ฃผ๋ฉด ๋๋ค. ์ด ๊ธฐ๋ฅ์ด ๋ฐ๋ก ๋ธ๋ฆฌ๊ฒ์ดํธ!
์ด๋ ๊ฒ ๋๋ฉด ๋ด๊ฐ ์ํ๋ ๋๋ก ์น ๋ก๋ฉ ์ํฉ์ ๋ฐ๋ผ ๋ก๋ฉ๋ฐ๊ฐ ์์ง์ด๊ณ , ์ฌ๋ผ์ง๊ฒ ๋๋ค.