我知道 UICollectionViewDelegateFlowLayout 是一个协议,而 UICollectionViewFlowLayout 是一个类,我知道协议和类之间的区别。根据我的理解,我可以让一个类遵循 UICollectionViewDelegateFlowLayout 协议来实现与继承自 UICollectionViewFlowLayout 的类完全相同的效果。我通过找到协议和类之间的这种关系来得出这个结论: UICollectionViewDelegateFlowLayout ------------- UICollectionViewFlowLayout collectionView:layout:sizeForItemAtIndexPath:---- itemSize collectionView:layout:insetForSectionAtIndex:--- - sectionInset – collectionView:layout:referenceSizeForHeaderInSection: -- headerReferenceSize – collectionView:layout:referenceSizeForFooterInSection: -- footerReferenceSize
我还在协议的参考中阅读了以下内容:“此协议中的所有方法都是可选的。如果您不实现特定方法,则流布局委托使用其自身属性中的值来获取适当的间距信息”所以我的理解是:如果 CollectionView 有 layout 属性和 delegateFlowLayout,delegateFlowLayout 可能会覆盖某些东西。换句话说,我可以同时拥有两者,并且协议将具有更高的优先级。对?
那么,发明一个做同样事情的协议和一个类背后的逻辑是什么?