๋ค์ํ ์์กด์ฑ ์ฃผ์ ๋ฐฉ๋ฒ์ ๊ณ ๋ คํ๊ณ , ์ต์ข ์ ์ผ๋ก ViewController์ ์์ฑ์ ์ฃผ์ ๋ฐฉ์์ ํตํด ์ปดํ์ผ ํ์์ ์ฃผ์ ์ฌ๋ถ๋ฅผ ํ๋จํ ์ ์๋๋ก ๋ณ๊ฒฝํ์์ต๋๋ค.
- ์ด๊ธฐ์ ์์ฑํ ์์กด์ฑ ์ฃผ์ ์ด๋ผ๊ณ ์ฐฉ๊ฐํ ์ฝ๋์ ๋๋ค.
- ๋ด๋ถ์์ ์์ฑ์ ํ๊ณ ์๊ธฐ ๋๋ฌธ์, ์ธํฐํ์ด์ค๋ฅผ ๋ถ๋ฆฌํ ์ด์ ๊ฐ ์ ํ ์๋ ์ฝ๋์ ๋๋ค.
- ๋ฉ์๋๋ก ํด๋น ๋ด๋ถ ํ๋กํผํฐ์ ์ฃผ์ ํ๋ ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝํ์ต๋๋ค.
- ํ์ง๋ง ์ฌ์ ํ ํด๋น ๋ฉ์๋๊ฐ ํธ์ถ๋๋์ง ์ปดํ์ผ ํ์์ ํ์ธํ ์ ์๋ค๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
- ์ด์ ์์ฑ์๋ฅผ ํตํด ์ฃผ์ ํ๋ ๋ฐฉ์์ ์๋ํ์ต๋๋ค.
- ํ์ง๋ง, ์ฌ์ฉํ๋ ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ, ๋จ์ ์์ฑ์ ํ์ ์, ๋ทฐ๋ชจ๋ธ ์ฃผ์ ์ด ํ์์ ์ธ์ง ์ ์ ์์ต๋๋ค.
- ์ด๋ฅผ fatal error๋ก ๋ง์์ผ๋, ์ฌ์ ํ ์ปดํ์ผ ํ์์ ์ ์ ์๋ค๋ ์ ์ ๋์ผํฉ๋๋ค.
- ์ต์ข
์ ์ผ๋ก, Coder๋ฅผ ํตํด ์์ฑํ๋ ๊ฒฝ์ฐ ์์ฒด๋ฅผ ์ปดํ์ผ ํ์์ ๋ง๊ธฐ ์ํด
available
ํ๊ทธ๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- ๊ฒฐ๊ณผ์ ์ผ๋ก, DIViewController๋ผ๋ ์์๋ฅผ ๋ง๋ค๊ณ , ViewModel์ด ํ์ํ ๊ฒฝ์ฐ ํด๋น VC๋ฅผ ์์ํ์ฌ ๊ตฌํํ์ต๋๋ค.
- ์ ๋ค๋ฆญ์ ์ฌ์ฉํ์ฌ ์ด๋ค ํ์ ์ด๋ ๊ฐ๋ฅํ๋๋ก ํ์์ต๋๋ค.
- ์คํ ๋ฆฌ ๋ณด๋๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ, iOS13 ์ดํ ๋ถํฐ๋ ์๋์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ๊ฒฐ๊ณผ์ ์ผ๋ก, ViewController๋ฅผ ์์ฑ ์์ ์ ์์กด์ฑ ์ฃผ์ ์ ํ๋ ๋ฐฉ์์ ๋์ ํ์ฌ, ์ปดํ์ผ ํ์์ ์ฃผ์ ์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์๋๋ก ๋ณ๊ฒฝํ์์ต๋๋ค.
์์กด์ฑ ์ฃผ์ ์ ๋ฐฉ๋ฒ๊ณผ ์์ฌ๊ฒฐ์ ๊ณผ์
- ์์กด์ฑ ์ฃผ์ ์ ๋ฐฉ์์๋ ํฌ๊ฒ 4๊ฐ์ง๊ฐ ์๋ค.
- ํ๋กํผํฐ ์ฃผ์
& ๋ฉ์๋ ์ฃผ์
- ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์, ํน์ ํ๋กํผํฐ๋ฅผ ์ ์ฉํด์ ์์กด์ฑ์ ์ฃผ์ ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
- ์์ฑ์ ์ฃผ์
- ์์ฑ์๋ง ๋ณด๊ณ ์์กด์ฑ์ ํ์ ํ ์ ์๊ฒ ๋๋ค.
- A์ B๊ฐ ์๋ก ์์์ผ ํ๋ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
- ์ด๋ด ๊ฒฝ์ฐ ์์ฑ์ ์ฃผ์ ๋ฐฉ์์ผ๋ก ์๋ก์ ์์กด์ฑ์ ์ฃผ์ ํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ์ฌ, ๋ฉ์๋ ํน์ ํ๋กํผํฐ ์ฃผ์ ๋ฐฉ์์ ์ฐ๋ ๊ฒ์ด ๋ณด๋ค ๊น๋ํ ๋ฐฉ๋ฒ์ผ ์ ์๋ค.
- ๊ฐ์ฅ ๊น๋ํ ๋ฐฉ์์ด๋ ๊น๋ค๋ก์ธ ์ ์๋ค.
- ์๋น์ค ๋ก์ผ์ดํฐ ํจํด (์ํฐ ํจํด)
- ๋ชจ๋ ์์กด์ฑ์ ์๊ณ ์๋ locator ๊ฐ์ฒด๊ฐ ์๊ณ , ์ด ํด๋น ๊ฐ์ฒด์ ์์ฒญํ์ฌ ์์กด์ฑ์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ด๋ค.
- ์์ฑ์๋ง ๋ณด๊ณ , ์์กด์ฑ์ ํ์ ํ ์ ์๋ค๋ ๋จ์ ์ด ์๋ค.
- ๋ํ locator ์์ฒด์ ์์กดํ๊ฒ ๋๋ค.
- ํด๋น ํด๋์ค์์ ์์ฒญ์ ํ๋ ํํ์ด๊ธฐ ๋๋ฌธ์ ์ธ๋ถ์์ mock ๊ฐ์ฒด๋ฅผ ๊ฐ์๋ผ์ ๋ฃ์ด์ ํ ์คํธํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํด ์ก๋ค.
- ๋ฐ๋ผ์ ์ํฐ ํจํด์ด๋ค.
- ๋ชจ๋ ์์กด์ฑ์ ์๊ณ ์๋ locator ๊ฐ์ฒด๊ฐ ์๊ณ , ์ด ํด๋น ๊ฐ์ฒด์ ์์ฒญํ์ฌ ์์กด์ฑ์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ด๋ค.
์ด์ค, ์ฐ๋ฆฌ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ์๋ก ์์กด์ฑ์ ์ฃผ์ ํด์ผ ํ๋ ์ํฉ์ด ๋ฐ๊ฒฌ๋์ง ์๊ธฐ ๋๋ฌธ์, ์์ฑ์ ์ฃผ์ ๋ฐฉ์์ ๋์ ํ๋ ๊ฒ์ด ๊ฐ์ฅ ํฉ๋ฆฌ์ ์ธ ํ๋จ์ด๋ผ๊ณ ์๊ฐํ๋ค.