Implementing modern collection views | Apple Developer Documentation

Advances in UI Data Sources - WWDC19 - Videos - Apple Developer


DiffableDataSource 소개

기존 DataSource 방식의 문제점

일반적인 UITableView/UICollectionView data source 구현 코드는 아래와 같은 패턴임

image.png

앱이 복잡해질수록 Data Source는 앱 내부의 복잡한 컨트롤러를 통해 구성된다.

먼저 UI는 컨트롤러에게 섹션에서 몇 개의 아이템을 렌더링해야 하는지를 물어본다.

image.png

만약 컨트롤러가 웹 서비스 요청 응답을 받고 나면, 이 데이터를 반영하기 위해 UI에게 변경되었다고 알려야 한다.

image.png

점점 복잡해지고, 열심히 노력해봐도 아래와 같은 에러를 꽤 자주 만났을 것이다.

image.png

결국 해결법을 찾아보다가 reloadData()를 호출하게 된다. 하지만 reloadData()는 애니메이션 효과가 적용되지 않기 때문에 UX를 해친다.