TableView dataSource์์ ์์ดํ ์ ๊ฐ์ ธ์ค๋ค outOfIndex๊ฐ ๋์ crash๊ฐ ๋ฌ๋ค. ์ด๋ก๋ถํฐ ๋ฐฐ์ด ์ ์ ๋ํด ์ ์ด๋ณธ๋ค.
์ด๋ค ์ํฉ์ธ๊ฐ?
- crash ๋ก๊ทธ๋ฅผ ํ์ธํด๋ณด๋, tableView์์ indexPath๋ฅผ ๋ฒ์ด๋ ๋ฐ์ํ์์ ํ์ธํ๋ค.
- ๋จ์ํ ์ฝ๋๋ฅผ ๋ณด์์ ๋๋ ๋ณ ๋ฌธ์ ๊ฐ ์์ด๋ณด์๋ค.
์ฝ๋์ ์ํฉ
- Api ํธ์ถ ์ ๋ค์ด๊ฐ๋ completion์์
performInMainThread
๋ฅผ ์ํํด์ฃผ๊ณ ์์๋ค. - completion์์ main์ผ๋ก ํด์คฌ๋ค๋ฉด, ์ค๋ณต๋๋ ์ฝ๋๊ฐ ์์ด์ง ๋ฏํ๋ค.
- Completion in main thread
- ํด๋น ์ฝ๋๋ด์์๋ tableView๋ฅผ reload ํด์ฃผ๊ณ ์์๋ค.
- ์ด๋ฌ๋ฉด ์ด๋ค ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์๊น?
๋ฌธ์ ์
- async๋ก 10๊ฐ์ reload๊ฐ asyncํ๊ฒ ์ฒ๋ฆฌ๋๋ค๊ณ ์๊ฐํด๋ณด์.
- main thread๋ serialํ๋ฏ๋ก ์์ฐจ์ ์ผ๋ก tableView reload๋ฅผ ์ํํ๋ค.
- ๊ทธ๋ฐ๋ฐ, ๊ทธ ์์ค์ ๋ง์ฝ dataSource์ ๊ฐ์๊ฐ ๋ณ๊ฒฝ๋๋ค๋ฉด?
- ํ์ฌ ์ํํ๋ ์์ ์ดํ์ ์ฒ๋ฆฌ๋ ์์ ์์ tableView๋ฅผ reloadํ๋ค๋ฉด outOfIndex๊ฐ ๋์ฌ ์ ์๋ค.
๋ฐฉ์ด์ฝ๋
- ์ด๋ฌํ ๋ฌธ์ ์ ๋๋ฌธ์, array์ ์ ๊ทผํด์ ๊ฐ์ ๊ฐ์ ธ์ฌ ๊ฒฝ์ฐ, ๋ฐฉ์ด์ฝ๋๋ฅผ ์ง์ผํ๋ค.
- ์ด์ ์ ์์๋ณด์๋ subscript๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋์์ด ๋ ์ ์๋ค.
- Safe Array Lookup
์ ๋ฆฌ
- ํฌ๋์๊ฐ ๋๊ธฐ ์ฌ์ด ์ํฉ์ ์์ ์ ์ ๋ฆฌํ์๋ค.
- ์ด๋ฒ์ ์ค์ง์ ์ธ ์ํฉ์ ๋ง์ฃผํ์ฌ ๋ณด๋ค ์กฐ์ฌํ๊ฒ ๋๋ ๊ณ๊ธฐ๊ฐ ๋์๋ค.