개발을 잘하고 싶은 주니어?

Diffable Data Source 공부하기 - 1 (이론) 본문

개발/iOS

Diffable Data Source 공부하기 - 1 (이론)

데쿠! 2021. 11. 5. 02:51
반응형

UICollectionViewDiffableDataSource

iOS 13 전에는 UICollectionViewDataSource를 채택해서 data source 설정했습니다.

이 프로토콜은 무슨 셀이 화면에 보일지, 몇 개의 셀이 보일지, section 관련 정보와 같은 데이터 정보를 collection view에게 알려줍니다.

UICollectionViewDiffableDataSource는 UICollectionViewDataSource와 유사하지만 에러(데이터와 ui가 맞지 않는?)를 발생시킬 가능성이 적습니다. 

diffable은 화면에 보여질 아이템이 업데이트될 때마다 collection view가 자동으로 업데이트된 상태와 이전의 상태의 차이를 계산한다는 의미입니다. 차이를 계산하고 나면 차이(업데이트, 추가, 제거할 때의 차이)를 애니메이션을 통해서 줍니다.

UICollectionViewDiffableDataSource에는 여러가지 장점이 있습니다.

1. 데이터가 바뀔때마다 자동으로 차이를 계산하고 애니메이션을 통해서 보여줍니다.

-> 데이터를 업데이트, 추가, 삭제할 때마다 데이터의 변화를 애니메이션을 통해서 볼 수 있습니다.

2. 데이터 동기화를 자동으로 해줍니다.

-> 이전에는 collection view와 data source 사이의 데이터를 동일하게 유지시켜줘야 했습니다. 이것은 개발자의 역할이며 만약 깜빡하고 동기화를 해주지 않았을 경우 다음과 같은 오류를 얻게 됩니다.

performBatchUpdates()를 하게 되면 신경 쓸게 많아서 크래시가 발생할 가능성이 있고 크래시를 처리하기에 복잡합니다. 하지만 diffable data source를 사용하게 되면 apply() 메서드 하나만으로 자동으로 차이를 계산하기 때문에 단순하게 사용할 수 있습니다.

performBatchUpdates() : insert, delete, reload, move 연산을 그룹으로 묶어서 animate하는 방식

3. 코드가 줄어듭니다.

 

실제 생성은 Diffable Data Source 공부하기 - 2에서...!

 

반응형
Comments