Completion์ main์์ ํธ์ถํด์ฃผ๋ ๊ฒ์ด ์ข๋ค.
์ด์
- api๋ฅผ ํธ์ถํ๊ณ , ๊ฒฐ๊ณผ๊ฐ ๋์ฐฉํ ๊ฒฝ์ฐ completion์ ํธ์ถํ๋ ํจ์๊ฐ ์๋ค๊ณ ํ์.
- ๋์ฐฉํ ์์ ์ ํด๋น ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ ํด๋ผ์ด์ธํธ์์ ๋ฃ์ completion์ ๊ทธ๋ฅ ํธ์ถํ๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
- ํด๋ผ์ด์ธํธ๊ฐ ์ํํ ๋์์ด ๋ง์ฝ UI ์ ๋ฐ์ดํธ๋ฅผ ํ๋ ๋์์ผ ๊ฒฝ์ฐ, main์์ ๋์ํ ์ ์๋๋ก ์ถ๊ฐํด์ฃผ์ด์ผ ํ๋ค.
- ๋น์ฅ์ ๊ด์ฐฎ์ง๋ง, ํด๋น service๋ฅผ ์ฌ๋ฌ๊ณณ์์ ์ฌ์ฉํ๋ค๋ฉด ๋ชจ๋ ๊ณณ์
DispatchQueue.main.async
๊ฐ ํ์ํด์ง๋ค. - app๊ณผ ๊ฐ์ ๊ณณ์์ ๋ค๋ฅธ thread๋ฅผ ์ฌ์ฉํด์ ์ฒ๋ฆฌํ ๊ณณ์ด ์ผ๋ง๋ ๋ ๊น?
- ๋ณดํต์ api ํธ์ถ ํ UI ์ ๋ฐ์ดํธ๊ฐ ์ผ๋ฐ์ ์ผ ๊ฒ์ด๋ค.
- ๋ฐฑ์๋์ ๊ฐ์ด ์ฑ๋ฅ์ด ์ค์ํ ์์ ์ด ์๋๋ผ๋ฉด, ๋น์ฅ ์ ์ฉํด์ผ ํ๋ ์์ ์ ๋ฐฉ์์ ๋ง์ถ๋๊ฒ ๋ณด๋ค ์ข๋ค.
- ์ฆ, UI ๊ฐ๋ฐ์ ๊ฒฝ์ฐ์๋ completion์ api ํธ์ถํ๋ ์ชฝ์์ main์์ ๋๋ ค์ฃผ๋ ๊ฒ์ด ๋ณด๋ค ์ฝ๋์ ์ง์ ๋ถํจ๊ณผ ์์ ์ฑ์ ๋์ผ ์ ์๋ ๋ฐฉ๋ฒ์ด๋ค.