1. Diffable이란?

1-1. reloadData()의 단점

모든 셀을 다시 그리게 되면서 UI가 애니메이션 없이 부자연스럽게 변경된다. 따라서 사용자 경험이 저하된다는 단점이 있다.

그럼 이런 문제가 생기는 이유는? 즉. reloadData()를 사용하는 이유는?

만약 Controller가 웹서비스 응답을 받고, 델리게이트를 처리하고 UI에 바뀌었다고 전달을 하면 우리는 에러를 마주합니다. 그리고 이러한 에러를 해결하기 위해서 우리는 reloadData를 통해서 동기화를 해줍니다

Untitled

Untitled

⇒ 즉. UI와 DataSource 역할을 하는 Data Controller의 Truth가 맞지 않기 때문입니다. 여기서 Truth란 시간이 지남에 따라 변화하는 자신의 버전을 말합니다.

1-2. Diffable을 사용하는 이유

→ reloadData를 사용해서 동기화를 하는 것은 괜찮습니다.

하지만 reloadData는 애니메이션이 없이 나타나게 되고 → 사용자 경험(UX)를 저하시킵니다

So. Diffable Data Source는 변경된 데이터 부분에 대해 자연스러운 업데이틀 제공한다!

1-3. apply

Q. 기존에 reloadData에는 자연스러운 애니메이션이 없었나?

A. 기존에는 특정 cell만 바뀐 경우 처리를 아래와 같이 했습니다!

하지만 위에 방식들도 충돌이나 복잡성같은 문제들이 존재합니다