README - donggeonoh/bithumb-techcamp-ios-1st GitHub Wiki
README
๋น์ธํ ํฌ์บ ํ ์ผ๊ณฐ ์์นด๋ฐ๋ฏธ
๊ฐ์
ํ๋ก์ ํธ ๋ชฉํ
๋น์ธ Public API ์ฌ์ฉํ ์ฑ ๊ตฌํ
ํ๋ก์ ํธ ๊ธฐ๊ฐ
2022.02.21 ~ 2022.03.13
ํ์ ์๊ฐ
์ค๋๊ฑด(DonggeonOh) | ๊น์ง์(์ ๋ก) | ํฉ์ ํ(ํํฉ) |
---|---|---|
[email protected] | [email protected] | [email protected] |
https://github.com/DonggeonOh | https://github.com/z3rosmith | https://github.com/HJEHA |
ํ๋ก์ ํธ ๊ธฐ์ ์คํ
- ์ํคํ
์ณ
- MVC
- ์์กด์ฑ ๊ด๋ฆฌ๋๊ตฌ
- Swift Pakage Manager (SPM)
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- Charts
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- Core Data
- UI
- 1 Storyboard, 1 ViewController
- Modern collection view
์ฑ ๊ตฌ๋ ํ๋ฉด
์ฝ์ธ ๋ฆฌ์คํธ ํ๋ฉด
๋ผ์ดํธ ๋ชจ๋ | ๋คํฌ ๋ชจ๋ |
---|---|
![]() |
![]() |
์ฝ์ธ ์์ธ ํ๋ฉด(์ฐจํธ)
๋ผ์ดํธ ๋ชจ๋ | ๋คํฌ ๋ชจ๋ |
---|---|
![]() |
![]() |
์ฝ์ธ ์์ธ ํ๋ฉด(ํธ๊ฐ)
๋ผ์ดํธ ๋ชจ๋ | ๋คํฌ ๋ชจ๋ |
---|---|
![]() |
![]() |
์ฝ์ธ ์์ธ ํ๋ฉด(์ฒด๊ฒฐ ๋ด์ญ)
๋ผ์ดํธ ๋ชจ๋ | ๋คํฌ ๋ชจ๋ |
---|---|
![]() |
![]() |
์ ์ถ๊ธ ํํฉ ํ๋ฉด
๋ผ์ดํธ ๋ชจ๋ | ๋คํฌ ๋ชจ๋ |
---|---|
![]() |
![]() |
๋๋ณด๊ธฐ ํ๋ฉด
๋ผ์ดํธ ๋ชจ๋ | ๋คํฌ ๋ชจ๋ |
---|---|
![]() |
![]() |
์ฃผ์ ๊ธฐ๋ฅ ์๊ฐ
๋คํธ์ํฌ
์ฝ์ด๋ฐ์ดํฐ
- ์ฝ์ธ ์์ธ ํ๋ฉด์ ์ฐจํธ
- ์ฝ์ธ ์์ธ ํ๋ฉด ์ค๋ฅธ์ชฝ ์๋จ์ ์ฐจํธ
- ๊ด์ฌ ์ฝ์ธ ๋ชฉ๋ก
์ฝ์ธ ๋ฆฌ์คํธ ํ๋ฉด
- ๊ด์ฌ/์ํ ํญ์ผ๋ก ๊ด์ฌ/์ํ ์
๋ก ์คํฌ๋กค ๊ธฐ๋ฅ
์ ์ ๊ฐ ํฐ์น๋ฅผ ํ๋ฒ ๋ ํด์ ๊ด์ฌ๋ชฉ๋ก์ ์ ๊ทผํ ํ์ ์์ด ํ ํ๋ฉด์์ ๊ด์ฌ/์ํ ๋ชฉ๋ก์ ์ ๊ทผํ ์ ์๋๋ก ํ๊ธฐ ์ํด์ ํ ํ๋ฉด์ ๊ด์ฌ/์ํ ๋ชฉ๋ก์ ๋ฃ์์
- ์ฝ์ธ๋ช ๋ฐ ์ฌ๋ณผ๋ก ๊ฒ์ ๊ธฐ๋ฅ
- ์ธ๊ธฐ์(์ต๊ทผ 24์๊ฐ ๊ฑฐ๋๊ธ์ก ๊ธฐ์ค), ์ด๋ฆ์, ํ์ฌ๊ฐ์, ๋ณ๋๋ฅ ์ ์ ๋ ฌ ๊ธฐ๋ฅ
- ์ ์ฌ๋ผ์ด๋ ์ ์ฆ๊ฒจ์ฐพ๊ธฐ ์ถ๊ฐ
- ํ์ฌ๊ฐ ๋ฐ ๋ณ๋๋ฅ ์ค์๊ฐ ์ ๋ฐ์ดํธ
์ฝ์ธ ์์ธ ํ๋ฉด
- ์น์์ผ์ ์ด์ฉํ ์ค์๊ฐ ๋ฐ์ดํฐ ๋ฐ์(ํ์ฌ๊ฐ, ๋ณ๋๊ฐ, ๋ณ๋๋ฅ )
- ์ฐจํธ ๊ตฌํ (์ต๊ทผ 3๊ฐ์ ์๊ฐ ๊ธฐ์ค)
์ฝ์ธ ์์ธ ํ๋ฉด(์ฐจํธ)
- ์๊ฐ(1๋ถ, 10๋ถ, 30๋ถ, 1์๊ฐ, 1์ผ) ๋ณ ์ฐจํธ ๋ฐ์ดํฐ ํ์
- ์ฐจํธ์ ์บ๋ค์คํฑ ํฐ์น ์ ์ ๋ณด(์๊ฐ, ๊ณ ๊ฐ, ์ ๊ฐ, ์ข ๊ฐ) ํ์
- ์น์์ผ์ ์ด์ฉํ ์ค์๊ฐ ์บ๋ค์คํฑ ๋ฐ์ดํฐ ๋ฐ์
์ฝ์ธ ์์ธ ํ๋ฉด(ํธ๊ฐ)
- ๋งค์, ๋งค๋ ์์ญ ๋ถ๋ฆฌ
- ์น์์ผ์ ์ด์ฉํ ์ค์๊ฐ ๋ฐ์ดํฐ ๋ฐ์
- ๋งค๋, ๋งค์์ ์ ์ฒด ์๋์ ํ์
- ๋งค๋ ๋๋ ๋งค์ ์ ๋ง ํ๋ฉด์ ํ์๋ ๊ฒฝ์ฐ ๋ฐ๋ ์ฃผ๋ฌธ์ ์ต์ ๊ฐ, ์ต๊ณ ๊ฐ ๋ทฐ ๋ ธ์ถ
์ฝ์ธ ์์ธ ํ๋ฉด(์ฒด๊ฒฐ ๋ด์ญ)
- ์น ์์ผ์ ์ด์ฉํ ์ค์๊ฐ ๋ฐ์ดํฐ ๋ฐ์
์ ์ถ๊ธ ํํฉ ํ๋ฉด
- ์ฝ์ธ์ ์ ์ถ๊ธ ํํฉ ์ํ ํ์
- ์ฝ์ธ๋ช , ์ฌ๋ณผ ๊ฒ์ ์ ํํฐ๋ง
- ํํฉ ์ํ์ ๋ํ ์ ์ฒด, ์ ์, ์ค๋จ ๋ชจ์๋ณด๊ธฐ
- ์ฝ์ธ ์ด๋ฆ, ์ ๊ธ, ์ถ๊ธ ์์ผ๋ก ์ ๋ ฌ
๋๋ณด๊ธฐ ํ๋ฉด
- ํ์๋ค์ ์ ๋ณด ๋ฐ ๋ผ์ด์ผ์ค๋ฅผ ํ ํ๋ฉด์ ๊ฐ๋จํ๊ฒ ํ์
ํธ๋ฌ๋ธ ์ํ
๋คํธ์ํฌ
์ฝ์ด๋ฐ์ดํฐ
- CoreDataManger๋ฅผ ์ด๋ป๊ฒ ๊ด๋ฆฌํ ์ง
- fatalError
์ฝ์ธ ๋ฆฌ์คํธ ํ๋ฉด
-
์ ์ฒด์ฝ์ธ๋ชฉ๋ก(์ํ)์์ ๊ด์ฌ์ฝ์ธ๋ชฉ๋ก์ผ๋ก Coin์ ๋ณต์ฌ๋ฅผ ํ ๊ฒฝ์ฐ diffable data source์์ ์ค๋ฅ๋ฅผ ๋ด๋ ๋ฌธ์ ๋ฐ์
Coin์ ๊ทธ๋๋ก ๋ณต์ฌํ๋ฉด Coin์ hash value๊ฐ ๋์ผํ๊ธฐ ๋๋ฌธ์ Coin์ ์๋ก ์์ฑํด์ ๊ฐ์ง UUID๊ฐ์ด ๋ค๋ฅด๋๋ก ํ๊ฒ ํด์ ํด๊ฒฐํ์์
-
๊ด์ฌ ๋ฒํผ์ ๋๋ฅด๊ณ data source์ snapshot์ applyํ์ฌ๋ ๊ด์ฌ ๋ฒํผ ๋ณํ๊ฐ ๋ฐ์์ด ์๋๋ ๋ฌธ์
Diffable data source๋ hash value๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ณํ๋ฅผ ๊ฐ์งํ๋๋ฐ, ์ด๋๊น์ง๋ item identifier์ Hashableํ๊ฒ ๋ง๋ค ๋ UUID๋ง ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ฒํผ์ select ์ํ ๊ฐ์ง๋ฅผ ๋ชปํ๋ ๊ฒ์ด์์ item identifier๋ฅผ Hashableํ๊ฒ ๋ง๋ค ๋ item identifier์ property ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋๋ก hash(into hasher:) ํจ์์ static func == ํจ์ ์ ์๋ฅผ ์์ ๋นผ๋ฒ๋ฆผ์ผ๋ก์ ํด๊ฒฐ
-
coinListCollectionView์ datasource ํด๋์ค๊ฐ ์ฝ์ธ์ ์ ๋ ฌ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ๋ด๋นํ ์ง ๊ณ ๋ฏผ
datasourceํด๋์ค๊ฐ ์ ๋ ฌ๊ธฐ๋ฅ์ ๊ฐ์ง๋ฉด ViewController์ ์ผ์ ์ค์ผ ์ ์๊ธฐ ๋๋ฌธ์ ์ข์๊ฒ์ด๋ผ๊ณ ์์ ๋ ๋์๊ฐ datasourceํด๋์ค๊ฐ ํต์ ๊ธฐ๋ฅ์ ๊ฐ์ง๋ฉด ๊ตณ์ด MVVMํจํด์ ์ฌ์ฉํ์ง ์๊ณ MVCํจํด์์๋ ViewController์ ๋น๋ํ๋ฅผ ๋ง์ ์ ์์ ๊ฒ์ด๋ผ๊ณ ์์
-
์ฒ์์ ํ์ฌ๊ฐ ์ ํ๋ ค๊ณ ์ ์ฒด ์ฝ์ธ๋ชฉ๋ก์ ์๋ ์ฝ์ธ๋ง๋ค ๋ค transaction api๋ฅผ ํธ์ถ(192๋ฒ)ํ๋ ค๊ณ ํ์. ํ์ง๋ง ๋ณด์ฌ์ง๋ ์ ๋ง ํต์ ํ๋ฉด ๋๋ค๊ณ ์๊ฐํ์ฌ ๋ณด์ฌ์ง๋ ์ ๋ง ํต์ ์ ํ๋๊ฑธ๋ก ๊ตฌํ. ํ์ง๋ง ๋ ๊ทธ๋ ๊ฒํ๋ ์ ์ฒด ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ ์๊ฐ ์์์. ๋ค์ 192๋ฒ ํธ์ถํ๋๊ฑฐ๋ก ๋ฐ๊ฟ, 192๋ฒ ํธ์ถ ํ ๋ชจ๋ ์๋ฃ๋์์ ํ์ธ์ ์ด๋ป๊ฒ ํ ๊ฒ์ธ์ง ๊ณ ๋ฏผ
192๋ฒ์ ๋น๋๊ธฐ ์์ ์ ํ๋์ ํ์คํฌ๋ก ๋ง๋ค์ด ์ค ์ ์๋ DispatchGroup์ ์ด์ฉํ์ฌ ์์ ์ ์๋ฃ๋ฅผ ํ์ธํ ์ ์์์
-
์ฝ์ธ๋ชฉ๋ก์ sortํ๋ ํจ์์์ ์ํธํ ๋ฆฌ์คํธ๋ฅผ ์ธ์๋ก ๋ฃ๊ณ ๋ฆฌํด๊ฐ์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์์ ๋ค์ ์ํธํ ๋ฆฌ์คํธ์ ๋์ ํ๋ ๋ฐฉ์์ ์ผ์๋๋ฐ, ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ํ๊ธฐ ์ด๋ ค์์ด ์์์
Array์ private extension์ผ๋ก filter์ sortedํจ์๋ฅผ ๊ตฌํํ์ฌ ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ ์ํด
-
์ฝ์ธ๋ชฉ๋ก์ ์คํฌ๋กคํ ๋ ์น์ ํค๋ ๋ทฐ๊ฐ ๊ฑธ์น๋ ์์ ์ ๊ด์ฌ/์ํ ํญ ์ค ํ๋๊ฐ ์ ํ๋๋๋ก ํด์ผํ๋๋ฐ ์น์ ํค๋ ๋ทฐ๊ฐ ๊ฑธ์น๋ ์์ ์ ์์๋ด๊ธฐ๊ฐ ์ด๋ ค์
-
ํ์ฌ๊ฐ๋ฅผ ๋ถ๋ฌ์ค๋ ๋ถ๋ถ์ DispatchGroup์ ์ฉ์ด ์ ์๋์ ๋ฐฉ๋ฒ ์ฐพ๋ ์ค
-
์น์์ผ ์ ์ฉ์ ์ฝ์ธ ๋ชฉ๋กํ๋ฉด์ด ๊ณ์ ์๋ก ์กฐ๊ธ์ฉ ์ฌ๋ผ๊ฐ๋ ํ์ ํด๊ฒฐ๋ฐฉ๋ฒ ๊ณ ๋ฏผ ์ค
-
์น์์ผ ์ ์ฉ ์ ์คํฌ๋กค ์ฌ๋ผ๊ฐ๋ ๋ฒ๊ทธ ํด๊ฒฐ
์ ์ฒด๋ฅผ data source์ apply ํ์ง ์๊ณ ๋ณด์ด๋ visible cell๋ง applyํจ์ผ๋ก์ ํด๊ฒฐ
์ฝ์ธ ์์ธ ํ๋ฉด
์ฝ์ธ ์์ธ ํ๋ฉด(์ฐจํธ)
- Candlestick API์ ๊ฐ์ฅ ์ต์ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ ์๊ฐ์ ๋ฐ๋ผ ๊ธฐ์ค๊ณผ ๋ค๋ฅธ ๊ฒฝ์ฐ์ ๋ํ ๋ฌธ์
์๋ฅผ๋ค์ด, 24์๊ฐ์ ๊ธฐ์ค์ผ๋ก ํ๋ฉด ์ ์ผ ๋ง์ง๋ง(์ต์ ) ๋ฐ์ดํฐ๋ ์ด์ 12์(์์ )์ ๊ธฐ์ค์ผ๋ก ํ ๋ฐ์ดํฐ๊ฐ ์๋ 1์๊ฐ์ ๊ธฐ์ค์ผ๋ก ํ ๋ฐ์ดํฐ๊ฐ ๋์ด์์ต๋๋ค. ์ค์๊ฐ์ผ๋ก ์ ๋ฐ์ดํธ ํ๊ธฐ ์ํด WebSocket Ticker API๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ๋, ํ์ฌ ์๊ฐ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ๋๊ฒจ๋ฐ๊ธฐ ๋๋ฌธ์ ์ต์ ์บ๋ค์คํฑ์ ๋ํ ์ ๋ฐ์ดํธ๋ฅผ ์ด๋ป๊ฒ ํด์ผํ ์ง์ ๋ํ ๊ณ ๋ฏผ์ ํ์์ต๋๋ค. ์ด ๋ฐฉ๋ฒ์ ํด๊ฒฐํด์ฃผ๊ธฐ ์ํด์ ์ต๊ทผ ๋ฐ์ดํฐ์ ์ค์๊ฐ์ผ๋ก ๋ฐ์ ๋ฐ์ดํฐ์ time์ Epoch timestamp๋ก ๋ณํํ ํ ๋์ ํ์์คํฌํ ๊ฐ ์ฐจ์ด๋ฅผ ์ด์ฉํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ ๋จ์(30๋ถ, 1์๊ฐ ๋ฑ..)๋ง๋ค์ ํ์์คํฌํ๋ฅผ ๊ณ์ฐ ํ ๋ ๊ฐ ์ฐจ์ด ๊ฐ์ ๋น๊ตํ์ฌ ์ ๋ฐ์ดํธ ํน์ ์บ๋ค์คํฑ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํด์ฃผ์์ต๋๋ค.
- Charts ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด์ X์ถ์ ๋ ์ง๋ก ์ปค์คํฐ๋ง์ด์ง ํ ๋์ ๋ฌธ์ ์
X์ถ์ ๋ ์ง๋ก ์ปค์คํฐ๋ง์ด์ง์ ํด์ค ๋ DefaultAxisValueFormatter ํด๋์ค๋ฅผ ์ด์ฉํ์ฌ ์ปค์คํ ์ ํด์ค ์ ์์ต๋๋ค. ํ์ง๋ง, ํด๋น ํด๋์ค๋ก ์ปค์คํฐ๋ง์ด์ง์ ํ๊ฒ ๋๋ฉด ์บ๋ค์คํฑ์ ์บ๋ค๋ฐ๊ฐ ๋ณด์ด์ง ์๋ ๋ฌธ์ ๊ฐ ์๊ฒผ์ต๋๋ค. ์ด์ ๋ฅผ ์ฐพ์๋ณด๋, X์ถ์ Epoch time์ผ๋ก ์ก์๋๋ฐ X์ถ์ ๊ฐ์ด ๋๋ฌดํฌ๋ฉด ๋ฐ์ดํฐ๋ฅผ ํํํ ๋ทฐ์ ๋์ด๊ฐ ์กฐ๊ทธ๋งฃ๊ฒ ๋๋ค๋ ๋ต๋ณ์ ์ฐพ์์ต๋๋ค. ๋ฐ๋ผ์, X์ถ์ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ก ๋ณ๊ฒฝํ๊ณ , ๋ฐ์ดํฐ ํฌ๋งท์ ํด๋น ์ธ๋ฑ์ค์ Epoch timestamp ๊ฐ์ ์ ์ฅํ์ฌ IndexAxisValueFormatter๋ฅผ ํตํด ์ปค์คํฐ๋ง์ด์ง ํ์์ต๋๋ค.
- ์ฒ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐฑ์ ํ ๋ ๊ทธ๋ํ์ ๋ถํฌํ ์ ์ฒด ๋ฒ์๋ฅผ ๋ณด์ฌ์ฃผ๋๋ฐ, ์ต๊ทผ ๋ถ๋ถ์ผ๋ก ํ๋ํ์ฌ ๋ณด์ฌ์ฃผ๊ณ ์ถ์ ๊ณ ๋ฏผ
- ๊ธฐ์กด์๋ ๊ทธ๋ํ ์ค์ผ์ผ๋ง์ ๊ณ ์ ์ผ๋ก ํ๋ํ์ฌ ๋ณด์ฌ์ฃผ์์ต๋๋ค. ์ฌ๊ธฐ์ ๋ฌธ์ ์ ์ ๊ฐ ์ฝ์ธ๋ง๋ค์ ๋ฐ์ดํฐ ์์ด ๋ฌ๋ผ ํ๋ํด์ค์ผ ํ๋ ๊ฐ์ด ๋ฌ๋ผ์ผ ํ์์ต๋๋ค. ๊ฐ๋จํ๊ฒ ์ค์ผ์ผ X, Y ๊ฐ์ ๋ณด์ ๊ฐ์ ์ ํ์ฌ ๋ฐ์ดํฐ ๊ฐฏ์ * ๋ณด์ ๊ฐ์ ์ค์ผ์ผ๋ก ์ก์์ต๋๋ค. ๊ฐ ์ฝ์ธ๋ง๋ค ๋๋ฌด ํ๋๋๊ฑฐ๋ ๋๋ฌด ์ถ์๋๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์์ต๋๋ค.
์ฝ์ธ ์์ธ ํ๋ฉด(ํธ๊ฐ)
-
์น ์์ผ์ผ๋ก ๋ค์ด์ค๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํ๋ ๋ฐฉ๋ฒ
Orderbook API(Bithumb Public API)๋ก ํธ๊ฐ ๋ฐ์ดํฐ๋ฅผ DataManager์ ์ ์ ํ์ต๋๋ค. Orderbookdepth ์น์์ผ์ผ๋ก ์๋ก์ด ํธ๊ฐ ์ ๋ณด์ DataManager์ ํธ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋์ ๋๋ฆฌ ํํ๋ก ๊ฐ๊ณต(
๊ฐ๊ฒฉ[key], ์๋[value]
) ๊ฐ๊ณตํ์ต๋๋ค. ๋์ ๋๋ฆฌ๋ก ๊ฐ๊ณตํ ๋ ๋ฐ์ดํฐ๋ฅผ ๋์ ๋๋ฆฌ ๊ธฐ๋ณธ ๋ฉ์๋์ธmerge
์ด์ฉํด ๊ฐ์๊ฐ๊ฒฉ[key]
๋ฅผ ๊ฐ์ง ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ ๊ฒฝ์ฐ ์น์์ผ์ ํตํด ์๋ก ๋ค์ด์จ์๋[value]
์ ์ฌ์ฉํด ์ค์๊ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ํ ์ ์๋๋ก ๊ฐ๊ณตํ์ต๋๋ค.filter
๋ก ์๋์ด 0์ธ ๋ฐ์ดํฐ๋ ๊ฑฐ๋ฅด๊ณdropLast
๋ฉ์๋๋ก ๋ฐ์ดํฐ์ ๊ฐ์๊ฐ 30๊ฐ๊ฐ ๋์ง ์๋๋ก ํ์ต๋๋ค. -
๋งค์ ์ต๊ณ ๊ฐ, ๋งค๋ ์ต์ ๊ฐ ๋ทฐ ํ๋ฉด ๋ ธ์ถ
ํธ๊ฐ ํ๋ฉด์ ์คํฌ๋กคํ๋ค ๋ณด๋ฉด ๋งค๋ ๋๋ ๋งค์ ์ ๋ง ํ๋ฉด์ ๋ ธ์ถ๋๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ด ๊ฒฝ์ฐ ๋ฐ๋ ์ฃผ๋ฌธ์ ๋ํ ์ ๋ณด๋ฅผ ์ ์ ์์ด ๋งค์ ์ต๊ณ ๊ฐ, ๋งค๋ ์ต์ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๋ฉด ๊ฑฐ๋๋์ ์ด์ ์ด ์์ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ ํ์ต๋๋ค. ํธ๊ฐ ํ๋ฉด์ ์ปฌ๋ ์ ๋ทฐ์ delegate ๋ฉ์๋ ์ค scrollViewDidScroll๋ฅผ ์ด์ฉํด ์คํฌ๋กค๋ ๋๋ง๋ค ์ปฌ๋ ์ ๋ทฐ์
visibleCells
๋ฅผ ์ด์ฉํด ํ์ฌ ํ๋ฉด์ ๋ณด์ด๋ ์ ์ ๋ชฉ๋ก์ ๊ฐ์ ธ์ค๊ณ ์ ์ ์์ดํ (Model)์ ํ์ (๋งค์, ๋งค๋)์ ๊ฐ์๋ฅผ ๊ฒ์ฌํ์ฌ ์ฃผ๋ฌธ์ ๋ฐ๋๋๋ ๋ทฐ๋ฅผ ๋ ธ์ถ์ํค๋๋ก ๊ตฌํํ์ต๋๋ค.