UICollectionViewDiffableDataSource 클래스를 이용한다.layouts
collectionViewLayout 프로퍼티에 저장되고, 프로퍼티에 할당되자마자 layout이 변경된다(without animation).cells and supplemenatry views
collectionView가 처음 내용을 생성할 때, 가장 먼저 하는 일은 data source에 item을 요청하는 일이다.
collectionView는 data source가 reuse를 위해 등록해놓은 view object들을 list나 queue의 형태로 저장하고 있다가 dequeue 를 통해 이용한다. )
원하는 view를 dequeue하여 얻은 이후에는, content를 설정하고, collectionView에 리턴해준다. collectionView는 layout object에 layout 정보를 요청한 후 view에 반영한다.