delegate pattern์ ์ฃผ๋ก ํ๋ฉด์ ์ ํ์์ ์ฌ์ฉ๋๋ค.
ํ๋ฉด์ ์ด๋ป๊ฒ ์ ํ๋ ๊น?
1๋ฒ ํ๋ฉด๊ณผ 2๋ฒ ํ๋ฉด์ด ์๋ค. ๋ค์ ๋งํด, 1๋ฒ view controller์ 2๋ฒ view controller๊ฐ ์๋ค.
1๋ฒ view controller์์ ๋ฒํผ์ ๋๋ฌ 2๋ฒ view controller๋ก ํ๋ฉด์ด ๋์ด๊ฐ ๋, 1๋ฒ ํ๋ฉด์ ๋จ์ํ ์ฌ๋ผ์ง๋ ๊ฒ์ด ์๋๋ค. 2๋ฒ ํ๋ฉด์ด 1๋ฒ ํ๋ฉด์ ์์ ์์ด๊ฒ ๋๋ ๊ฒ์ด๋ค.
์ด๋ 2๋ฒ ํ๋ฉด์ด ์๊ธฐ๋ฉด์ 2๋ฒ view conroller๋ ์ด๊ธฐํ๋์ด ์์ฑ๋๋ ๊ฒ์ผ๋ก 1๋ฒ view controller๋ก๋ถํฐ ์ ๋ณด๋ค์ ๋ฐ์์ค๊ฒ ๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ง์ผ 2๋ฒ ํ๋ฉด์์ ๋ค๋ก๊ฐ๊ธฐ ๋ฒํผ์ผ๋ก ๋ค์ 1๋ฒ ํ๋ฉด์ผ๋ก ๋์๊ฐ๊ฒ ๋๋ฉด ์ด๋ป๊ฒ ๋ ๊น? 1๋ฒ ํ๋ฉด์ด ๋์ค๋ฉด์ ์๋กญ๊ฒ 1๋ฒ view controller๊ฐ ๋ค์ ์ด๊ธฐํ ๋๋ฉด์ ์์ฑ๋ ๊น?
์๋๋ค. 2๋ฒ view controller๊ฐ pop๋๋ฉด์ ์ ๋ณด๋ค์ด ํด์ง๋์ด ์ฌ๋ผ์ง๊ณ ๋ฐ์ ๊น๋ ค ์๋ 1๋ฒ ํ๋ฉด์ด ๋ค์ ๋ณด์ด๊ฒ ๋๋ ๊ฒ์ด๋ค. ๊ทธ๋ ๋ค๋ฉด ๋ง์ผ 2๋ฒ ํ๋ฉด์ธ ์ํ์์ 1๋ฒ ํ๋ฉด์ ์ ๋ณด๋ ๋ฐ๊พธ์ด ์ฃผ๊ณ ์ถ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น? 1๋ฒ ํ๋ฉด์ ์๋กญ๊ฒ ์ด๊ธฐํํด ์์ฑ๋๋ ๊ฒ์ด ์๋๋ฐ.
> ๋ฐ๋ก ์ด๋ฐ ๊ฒฝ์ฐ์ delegate๋ฅผ ์ฌ์ฉํ๋ค. <
2๋ฒ ํ๋ฉด์์ `MINT`๋ผ๋ ์ ๋ณด๋ฅผ ๋ฐ์๋ค. ์ด๋ฅผ 1๋ฒ view controller์ ์๋ ์ด๋ฆ์ ํ ๋นํด์ฃผ๊ณ ์ถ์ผ๋ฉฐ, ์ด๋ฆ์ `data: MINT`๋ฅผ ํ ๋นํ๋ ๊ธฐ๋ฅ์ ๊ฐ์ง ํจ์๋ 1๋ฒ view controller์ ์๋ค. ์ด๋ป๊ฒ 1๋ฒ์ ํจ์๋ก ์ ๋ณด๋ฅผ ์ ๋ฌํ ์ ์์๊น? ๋ฐ๋ก 1๋ฒ์ ๋ถ๋ฅผ ์๋ ์๋๋ฐ.
๋๋ฌธ์ ํ๋กํ ์ฝ์ ํตํ delegate pattern์ ์ด์ฉํด ๋๊ฒจ์ค๋ค. 1๋ฒ view controller๋ `์ ์์ ๋ณด protocol`์ ์ฑํํ๋ค. ๋๋ฌธ์ `์ ์์ ๋ณด protocol` ๋ด๋ถ์ ์๋ func ์ด๋ฆ ์ ๋ ฅ์ ๊ฐ๊ฒ ๋๊ณ , ๊ตฌํํ๋ค. 2๋ฒ view controller๋ `weak var delegate`๋ฅผ ํตํด์ `์ ์์ ๋ณด` ํ์ ์ผ๋ก ์์ฑ๋๋ค. ๋๋ฌธ์ `์ ์์ ๋ณด protocol`์ ์๋ `์ด๋ฆ์ ๋ ฅ ํจ์`๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ์ด๋ฅผ ํตํด `mint`๋ผ๋ ์ด๋ฆ ์ ๋ณด๋ฅผ ๋๊ฒจ์ค๋ค. ๊ทธ๋ฐ๋ฐ ์ด๋ `weak var delegate`๋ก ์ ์ธํด ์์ฑํ `์ ์์ ๋ณด protocol`์ ์๋ ์ด๋ฆ์ ๋ ฅ ํจ์๊ฐ 1๋ฒ view controller์ ์๋ค๋ ๊ฑด ์ด๋ป๊ฒ ์ ์ ์์๊น?
์ด๋ delegate ๋ผ๋ ๋จ์ด๊ฐ ๋์ค๊ฒ ๋ ๊ฒ๊ณผ๋ ์ฐ๊ด์ด ์๋ค. ์ฌ๊ธฐ์ 1๋ฒ view controller๊ฐ ์ด๋ฆ์ ๋ํ ์ ๋ณด๋ฅผ ๋ฐ์์ค๊ณ ์ถ์ง๋ง, ํ ์ ์์ผ๋ 2๋ฒ view controller์๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ ๋ฌ๋ผ๊ณ ์์ํ๋ ๊ฒ์ด๋ค. ๋๋ฌธ์ ๋ด๊ฐ ์ด๊ฒ์ ์์ํ๋ค๊ณ ์๋ ค์ค์ผ ํ๋ค.
'๐ iOS > ๐ ๊ฐ๋ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Network] TLS/SSL (1) | 2024.10.28 |
---|---|
[ํจ๋ฌ๋ค์] ํจ์ํ ํ๋ก๊ทธ๋๋ฐ (1) | 2024.10.23 |
[iOS]Unit Test์ ์ฌ์ฉ (0) | 2024.02.05 |
[๋์์ธ ํจํด]Observer Pattern (1) | 2024.01.27 |