์ด์ ๊ธ์์ ์ด๊ธฐํ๋ฅผ ์์๋ณด์๋ค. ๊ทธ๋ฐ๋ฐ ๊ทธ ๊ณผ์ ์์ Two Phase Initialization์ด๋ผ๋ ์์ํ ๋จ์ด๋ฅผ ๋ณด์๋ค๋ฉด ์ ์๋ค. Swift๋ ์์ ๊ณผ์ ์์ ๋ชจ๋ instance์ property์ ๊ฐ์ด ๋ณด์ฅ๋๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก 2๋จ๊ณ ์ด๊ธฐํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค. ์์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑํ์ผ๋ ์ฝ๊ฒ ์ดํด๊ฐ ๊ฐ๋ฅํ ๊ฒ์ด๋ค. ์๊ฐ๋ณด๋ค ๋ณ ๊ฒ ์์ผ๋ ๊ฒ๋จน์ง ๋ง์. ์ฝ๊ฒ ์ดํดํ๊ณ ์ถ๋ค๋ฉด ๋ชจ๋ property์ ์ด๊ธฐํ๋ฅผ ๋ณด์ฅํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ด๋ผ๋ ๊ฒ์ ์ผ๋์ ๋๊ณ ๊ธ์ ์ฝ์. ๊ทธ๋ผ ์์ํด๋ณด์.
์ด๊ธฐํ ํธ์ถ๊ณผ์ ๋ฐ๋ผ๊ฐ๊ธฐ
ํธ์ถ๋๋ ๊ณผ์ ์ ๋ฐ๋ผ๊ฐ ๋ณด๋๋ก ํ๊ฒ ๋ค.
- 1๋จ๊ณ
- coffee ์ธ์คํด์ค๊ฐ ์์ฑ๋๋ค.
- convinience ์์ฑ์์ด๋ฏ๋ก, ํด๋น ์ธ์คํด์ค์ ์ง์ ์์ฑ์๋ฅผ ๋จผ์ ํธ์ถํ๋ค.
- ์ด ๋จ๊ณ์์ ์์๋ฅผ ๋ณ๊ฒฝํ๋ฉด ์ปดํ์ผ ์๋ฌ
- convinience ์์ฑ์์ด๋ฏ๋ก, ํด๋น ์ธ์คํด์ค์ ์ง์ ์์ฑ์๋ฅผ ๋จผ์ ํธ์ถํ๋ค.
- coffee์ ์ง์ ์์ฑ์๊ฐ ํธ์ถ๋๋ค.
- ์ง์ ์์ฑ์๋ ๋จผ์ , ์๊ธฐ ์์ ๋ง์ด ๊ฐ์ง๊ณ ์๋ property๋ฅผ ๋จผ์ ์ด๊ธฐํํ๋ค.
- ์ด ๋จ๊ณ์์ ์์๋ฅผ ๋ณ๊ฒฝํ๋ฉด ์ปดํ์ผ ์๋ฌ
- super ํด๋์ค์ ํ๋กํผํฐ๋ฅผ ๋ณ๊ฒฝํ๋ฉด ์ปดํ์ผ ์๋ฌ
- ์ง์ ์์ฑ์๋ ๋จผ์ , ์๊ธฐ ์์ ๋ง์ด ๊ฐ์ง๊ณ ์๋ property๋ฅผ ๋จผ์ ์ด๊ธฐํํ๋ค.
- ์์ ํด๋์ค(drink)์ ์์ฑ์๋ฅผ ํธ์ถํ๋ค.
- ์์ ํด๋์ค์์๋ ๋, ์๊ธฐ ์์ ๋ง์ด ๊ฐ๋ ํ๋กํผํฐ๋ฅผ ๋ชจ๋ ์ด๊ธฐํ ํ๋ค.
- ์ฆ, ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น ๋ฐ๋๋ค.
- ์ด ๋จ๊ณ์์ ๋ฉ์๋ ํธ์ถ์ด ๋ถ๊ฐํ๋ค(์ปดํ์ผ ๋จ๊ณ์์ ๋ง์๋ )
- ์ด ์ด์ ๋ ๋ฉ์๋์ ๊ฒฝ์ฐ, ๋ชจ๋ ํ๋กํผํฐ๊ฐ ์ธํ ๋ ์ํ์์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ณ์ ๋ฐฉํฅ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
- ์์ ํด๋์ค์์๋ ๋, ์๊ธฐ ์์ ๋ง์ด ๊ฐ๋ ํ๋กํผํฐ๋ฅผ ๋ชจ๋ ์ด๊ธฐํ ํ๋ค.
- ์์ ํด๋์ค์์ ๋ชจ๋ ์์ฑ์์์ ํ๋กํผํฐ๋ฅผ ์ด๊ธฐํ ํ๋ค.
- coffee ์ธ์คํด์ค๊ฐ ์์ฑ๋๋ค.
- 2๋จ๊ณ
- ์ด์ ๋ชจ๋ ํ๋กํผํฐ๊ฐ ์ด๊ธฐํ ๋์ด ๊ฐ๊ฐ์ ์ธ์คํด์ค์์ self๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
- ๋ค์ ์์ ํด๋์ค์์ ํ์ ํด๋์ค์ ์์ ํ๋ฆ์ ๋ฐ๋ผ๊ฐ๋ฉด์ ๊ฐ์ ์ ๋ฐ์ดํธ ํ๋ค.
- coffee ์ธ์คํด์ค์ ๊ฒฝ์ฐ ์ด์ ์ง์ ์์ฑ์์์
size
๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค. - ๋ค์์ผ๋ก ํธ์ ์์ฑ์์์ coffee์ธ์คํด์ค์ ํ๋กํผํฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค.
ํด๋น ๋ฐฉ๋ฒ์ ํ์ธํ๊ธฐ ์ํด์๋ break point๋ฅผ ๊ฑธ๊ณ debugger์์ po self
์ ๊ฐ์ ๋ช
๋ น์ด๋ฅผ ํตํด ์ ๊ทผ์ด ๊ฐ๋ฅํ์ง ํ์ธํ ์ ์๋ค.
๊ท์น
์์ ๋ฐฉ๋ฒ์ ์ดํดํ๋ค๋ฉด ์์ผ๋ก ๋์ค๋ ๊ท์น์ ์ฌ์ค ๋น์ฐํ๊ฒ ์ดํดํ ์ ์๋ค.
- ์ง์ ์์ฑ์์์๋ ํ์ฌ ํด๋์ค์์ ์ ์ํ ์ ์ฅ ํ๋กํผํฐ์ ์ด๊ธฐ๊ฐ์ ๊ฐ์ง ํ์ super.init์ ํธ์ถํด์ผ ํ๋ค. : ์์ ์ฑ ์ฒดํฌ๋ฅผ ์ํจ ์ธ๋ฏ. ํ์ ํด๋์ค์์ ๋จผ์ ์ํ๋ค์์ ์์๋ก ๊ฐ์ ์ด๋ฐ ์๋ฏธ
- ํ์ ํด๋์ค โ ์์ ํด๋์ค๋ก ์ด๊ธฐํ๊ฐ ์ด๋ฃจ์ด์ง: ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ด ์ด๋ฃจ์ด์ง
- ๋ง์ง๋ง์ ์ต์๋จ ํด๋์ค์์ ์ด๊ธฐํ๊ฐ ์ด๋ฃจ์ด์ง
- ์ฆ, ์๋ธํด๋์ค์ ํฌ๊ธฐ๋ super ํด๋์ค๋ก ๊ฐ๊ธฐ์ ์ ์๊ณ ์์
- ์ง์ ์์ฑ์๋ ์์ ๋ฐ์ property๊ฐ์ ๋ฃ๊ธฐ์ ์ super class init์ ํธ์ถํด์ผ ํจ
- ๋ณด๋ฉด, ๊ทธ๋ ์ง ์์ผ๋ฉด ์์ ํด๋์ค์์ ์ฌ์ฉํ๋ ํ๋กํผํฐ๊ฐ ์ด๊ธฐํ๋์ง ์์๊ธฐ ๋๋ฌธ์ ๋ฐ์์ด ์๋ ๊ฐ๋ฅ์ฑ์ด ์์
- ํธ์ ์์ฑ์์์ ๊ฐ์ ํ ๋นํ๊ธฐ ์ ์, ์ง์ ์์ฑ์๋ฅผ ํธ์ถํด์ผ ํจ
- ์ด๊ฒ๋ ์๋ฆฌ์์ผ๋ก ๋ณด๋ฉด, designated๋ก ํ๋กํผํฐ์ ๊ฐ์ ํ ๋นํ๊ธฐ ๋๋ฌธ์, ํด๋น ํจ์๋ฅผ ํธ์ถํ์ง ์๊ณ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์์. ์๋๋ฉด ์ด๊ธฐํ๊ฐ ์๋์ด ์์ผ๋๊น
- 1๋จ๊ณ๊ฐ ๋๋๊ธฐ ์ ์ ๋ฉ์๋ ํธ์ถ์ ํ์ง ๋ชปํ๋ค.
- ์ธ์คํด์ค์ ์ด๊ธฐ๊ฐ์ผ๋ก init์ ํ๋ค์ ๋ฉ์๋ ํธ์ถ์ด ๊ฐ๋ฅํ๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ์ฐ๋ ๊ธฐ๊ฐ์ ๋ฑ์ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๊ฒฐ๋ก
- 1๋จ๊ณ: designated ์์ฑ์๋ฅผ ํตํด ํด๋น ์ธ์คํด์ค๊ฐ ์ฌ์ฉํ๋ ์์ฑ์ ์ด๊ธฐํํ๊ณ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋นํ๋ค.
- ์ด ๊ณผ์ ์์ subclass โ superclass๋ก ์ด๋ํ๋ฉฐ,
- subclass์์ ์ฌ์ฉํ๋ ํ๋กํผํฐ์ ์ด๊ธฐ๊ฐ์ ๋ฌด์กฐ๊ฑด ์ค์ ํด์ผ ํ๋ค.
- super ํด๋์ค์์ ์ฌ์ฉํ๋ ๊ฐ๋ ๋ชจ๋ ์ด๊ธฐํ๊ฐ ๋๋ค.
- ์ฆ ์ด๊ธฐ๊ฐ์ผ๋ก ๋ชจ๋ initํ๋ ๊ณผ์ ์
- 2๋จ๊ณ: ์์, ํน์ subclass์์ ์ฌ์ฉํ๋ ์์ฑ๊ฐ์ ์ ๊ทผํ์ฌ ์ํ๋ ๊ฐ์ผ๋ก ๋ณ๊ฒฝํ๋ค.
- ์ด์ ์ผ self์ ์ ๊ทผํ ์ ์๋ค. ์ ๊ทผํ ์ํ์์ ํ๋กํผํฐ์ ๊ฐ์ ๋ณ๊ฒฝํ๋ค.
์ฌ์ฉ ์ด์
- ์์ ํ๊ฒ init๋๋ ๊ฒ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ณด์ธ๋ค.
- ํ์ ํด๋์ค์์ ์ฌ์ฉํ๋ ์์ฑ์ด ์๋์ง ํ์ธ, ๋ฉ๋ชจ๋ฆฌ ํ ๋นํ๊ณ ์๋ก ๋ณด๋
- ์ด ๋ฐฉ์์ผ๋ก ์ฌ๊ท์ ์ผ๋ก ์์๊น์ง ํ์ํ๊ณ , ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ ๋น๋๋ ๊ฒ์ด ๋ณด์ฅ๋จ
- ๋ณด์ฅ๋ ํ์ self๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํ์ฌ, ์๋ชป๋ ์ฌ์ฉ์ ๋ฐฉ์งํจ