테이블 뷰 업데이트를 시작할 때 tableView.beginUpdates()를 호출하고, 끝날 때 tableView.endUpdates()를 호출합니다. 두 메서드 사이에 테이블 뷰 셀을 업데이트하는 메서드를 넣어주면 됩니다. insertRows() 메서드를 사용하면 선택한 특정 셀을 업데이트할 수 있습니다. 따라서 TableView에 보여줄 데이터와 UI가 틀어지는 문제를 방지할 수 있었고, 크래시가 발생하는 문제도 해결할 수 있었습니다.
insertRows의 장점
추가적으로 데이터가 빠르게 추가, 변경되는 상황에서 insertRows()를 사용하면 얻을 수 있는 장점이 있습니다.
1. UI 업데이트 속도 증가
실제 제품에서 테스트했을 때의 결과 일부를 가져왔습니다.
- reloadData(): 약 2.1ms
- insertRows(): 약 0.2ms 보시는 것과 같이 빠르게 변화하는 데이터를 TableView에 업데이트할 때는 변화된 부분만 업데이트하는 insertRows()가 더 빠른 속도를 보여줍니다.
2. 메모리 사용량 감소
데이터가 추가될 때마다 새로 모든 데이터를 업데이트하는 reloadData()에 비해 insertRows()가 더 적은 메모리를 사용하게 됩니다. 이는 TableView에서 보여주는 데이터가 많을수록 명확한 차이를 보여줍니다.
결론
데이터의 변경이 빠르지 않거나 특정 상황에서 데이터가 한 번에 많이 추가되는 상황이라면 reloadData()가 더 좋은 선택일 수 있습니다. 하지만 실시간으로 빠르게 추가되는 로그를 보여주는 상황처럼 UI 업데이트가 빈번하게 발생한다면 insertRows() 사용을 고려해보는 것도 좋은 선택지가 될 수 있을 것입니다.