Я знаю, что UICollectionViewDelegateFlowLayout — это протокол, а UICollectionViewFlowLayout — это класс, и я знаю разницу между протоколом и классом. Насколько я понимаю, у меня может быть класс, который будет следовать протоколу UICollectionViewDelegateFlowLayout, чтобы добиться того же эффекта, что и класс, унаследованный от UICollectionViewFlowLayout. Я прихожу к такому выводу, находя такие отношения между протоколом и классом: - sectionInset – collectionView:layout:referenceSizeForHeaderInSection: -- headerReferenceSize – collectionView:layout:referenceSizeForFooterInSection: -- footerReferenceSize
Я также прочитал следующее в ссылке на протокол: «Все методы в этом протоколе являются необязательными. Если вы не реализуете конкретный метод, делегат компоновки потока использует значения в своих собственных свойствах для соответствующей информации о интервалах». Итак, мой Понимание таково: если у CollectionView есть свойство макета и делегат FlowLayout, делегат FlowLayout потенциально может что-то перезаписать. Другими словами, я могу иметь и то, и другое, и протокол будет иметь более высокий приоритет. Верно?
Итак, в чем логика изобретения протокола и класса, которые делают одно и то же?