Deep_Dev

๐Ÿ“‹ reloadData() ๊ฐœ์š” ๋ฐ ์ฐธ๊ณ ์‚ฌํ•ญ

 

๐Ÿ“Œ reloadData()

reloadData()๋Š”  ํ…Œ์ด๋ธ”๋ทฐ์˜ ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ์ด๋‹ค. 

ํ…Œ์ด๋ธ”๋ทฐ ์ธ์Šคํ„ด์Šค์—์„œ ์ ‘๊ทผํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

reloadData()๋Š” ํ…Œ์ด๋ธ” ๋ทฐ์˜ ํ˜„์žฌ ๋ณด์ด๋Š” ์ „์ฒด์—ด(row), ์„น์…˜(section)์„ ์—…๋ฐ์ดํŠธํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

reloadData()๋Š” ํŠน์ • ์—ด, ์„น์…˜์˜ ๋ถ€๋ถ„์  ์—…๋ฐ์ดํŠธ๊ฐ€ ์•„๋‹Œ, ํ…Œ์ด๋ธ” ๋ทฐ์˜ ์ „์ฒด ์˜์—ญ์„ ์—…๋ฐ์ดํŠธ ํ• ๋•Œ ํšจ๊ณผ์ ์ด๋‹ค.

 

 

๐Ÿ“Œ Declaration ์„ ์–ธ ๋ฐฉ์‹

func reloadData()

 

reloadData()๋Š” ํ…Œ์ด๋ธ”๋ทฐ์˜ ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ๋กœ, ์œ„์™€ ๊ฐ™์ด ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

 

 

ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ํƒ€์ž…์€ UICollectionView, UITableView ๋“ฑ์ด ์žˆ๋‹ค.
์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” TableView๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

 

 


๐Ÿ“Œ reloadData() ์‚ฌ์šฉ๋ฐฉ๋ฒ•

 

์„น์…˜์˜ HeaderView / FooterView, Cell, Index ๋ฐฐ์—ด ๋“ฑ์„ ํฌํ•จํ•˜๋Š” ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ reload ํ›„ ์žฌ๊ตฌ์„ฑ ํ•˜๋ ค ํ•  ๋•Œ ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์•ž์„œ ๋งํ–ˆ๋“ฏ์ด, reloadData()๋Š” ์—…๋ฐ์ดํŠธ ๊ฐ„ ํšจ์œจ์ ์ธ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค. 

์ด ๋•Œ ํ…Œ์ด๋ธ”๋ทฐ์˜ ์ „์ฒด ์˜์—ญ์„ ์—…๋ฐ์ดํŠธ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ํ˜„์žฌ ๋ณด์ด๋Š” ์—ด ๋งŒ์„ ์—…๋ฐ์ดํŠธ ํ•ด์ค€๋‹ค. ๋˜ํ•œ reload ๋  ๋•Œ์˜ ๊ฒฐ๊ณผ์— ๋Œ€ํ•ด ํ…Œ์ด๋ธ”์€ ์ž๋™์ ์œผ๋กœ offset์„ ์กฐ์ ˆํ•œ๋‹ค. 

 

๋˜ํ•œ tableView๊ฐ€ reloadData()๋ฅผ ํ˜ธ์ถœํ•œ ํ›„

-> tableView๊ฐ€ ๊ฐ–๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์™„๋ฒฝํžˆ ์—…๋ฐ์ดํŠธ ํ–ˆ๋‹ค๋ฉด,

-> ์ดํ›„ ํ•ด๋‹น tableView์˜ delegate(UITableViewDelegate), dataSource(UITableViewDataSource) ๊ด€๋ จ ๋ฉ”์„œ๋“œ๋Š” ์ƒํ™ฉ๊ณผ ์กฐ๊ฑด์— ๋งž๊ฒŒ ํ˜ธ์ถœ๋œ๋‹ค.

 

๊ทธ๋Ÿฌ๋ฏ€๋กœ, reloadData() ํ˜ธ์ถœ๊ณผ ์—ฐ๊ณ„ํ•œ ์„ธ๋ถ€ ๋™์ž‘, ์ด๋ฒคํŠธ๋ฅผ ๊ด€๋ฆฌํ•  ๋•Œ ์ด์ ์„ ์—ผ๋‘ํ•˜๊ณ  ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ, ๋ฐ์ดํ„ฐ ์†Œ์Šค ๋ฉ”์„œ๋“œ๋ฅผ ํ•จ๊ป˜ ํ™œ์šฉํ•˜๋Š”๊ฒƒ์ด ์ข‹๋‹ค.

 

 

 


๐Ÿ“Œ reloadData() ์‚ฌ์šฉ ๊ฐ„ ์ฃผ์˜์‚ฌํ•ญ

 

1. tableView์˜ ํ–‰์„ ์ œ๊ฑฐ ๋ฐ ์‚ฝ์ž…ํ•˜๋Š” ์ž‘์—…์„ ํ•  ๋•Œ, reloadData() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค. ํŠนํžˆ beginUpdates(), endUpdates()์™€ ๊ฐ™์€ ๋ฉ”์„œ๋“œ์˜ ํ˜ธ์ถœ์ด ์žˆ์„ ๋•Œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ธ”๋ก ๋‚ด์—์„œ ์‚ฌ์šฉํ•ด์„œ ์•ˆ๋œ๋‹ค.

 

2. tableView์˜ ๋ณด์ด๋Š” ์˜์—ญ ์ „์ฒด๊ฐ€ ์•„๋‹Œ ์ผ๋ถ€๋งŒ ์—…๋ฐ์ดํŠธ/์‚ฝ์ž…/์‚ญ์ œ ํ•˜๊ณ ์ž ํ• ๋•Œ๋Š” indexPath ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•ด์„œ reloadRows(at:with:)๋กœ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜, perfromBatchUpdates(_:compeltion)์„ ์‚ฌ์šฉํ•˜๋Š” ๋“ฑ, reloadData() ๋ฉ”์„œ๋“œ ๋Œ€์‹  ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

3. ๋˜ํ•œ reloadData() ๋ฉ”์„œ๋“œ๋Š” UI๋ฅผ ๋ณ€ํ™”์‹œํ‚ค๋Š” ๋ฉ”์„œ๋“œ๋กœ ๋ฐ˜๋“œ์‹œ ๋ฉ”์ธ์Šค๋ ˆ๋“œ์—์„œ ๋™์ž‘ํ•ด์•ผ ํ•œ๋‹ค.

๋งŒ์•ฝ ํด๋กœ์ ธ ๋“ฑ์—์„œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ๋กœ ๋™์ž‘์ด ๋  ๋•Œ๋Š” DispatchQueue๋‚˜ OperationQueue ๋“ฑ์„ ํ™œ์šฉํ•ด์„œ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ(main thread)์—์„œ ๋™์ž‘ํ•˜๋„๋ก ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

๐Ÿ’ก ์ค‘์š”์‚ฌํ•ญ
tableView์˜ ํ”„๋กœํผํ‹ฐ ์ค‘, hasUncommittedUpdates ๊ฐ’์ด true๋ผ๋ฉด, reloadData()๋ฅผ ํ˜ธ์ถœํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค.
๋งŒ์•ฝ ํ•ด๋‹น ์ž‘์—…์„ ํ•˜๊ฒŒ ๋˜๋ฉด tableView ๋‚ด์—์„œ reloadData()๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „์˜ uncommitted๋œ ๋ณ€ํ™”๊ฐ€ ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ์‚ฌํ•ญ๋“ค์€ ๊ฐ•์ œ๋กœ ์‚ญ์ œ๋œ๋‹ค.