iOS 10中的UICollectionView预取数据源?

khu*_*han 10 swift3 ios10 xcode8

prefetchDataSources在iOS 10 中引入的目的是什么?

我刚刚在XCode 8 GM Seed中运行了一个项目并开始出错:

MessagesExtension[17902:1238603] *** Assertion failure in -[UICollectionView _createPreparedSupplementaryViewForElementOfKind:atIndexPath:withLayoutAttributes:applyAttributes:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3599.6/UICollectionView.m:2161
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Mil*_*lia 22

UICollectionView今年获得了一个名为prefetchDataSource的新属性.就像现有的delegate和dataSource属性一样,我们可以简单地将它设置为一个实现新的UICollectionViewDataSourcePrefetching协议的对象.

该协议在iOS 10中是全新的,并且要求我们只实现一个新功能:

public func collectionView(_ collectionView: UICollectionView, prefetchItemsAt indexPaths: [IndexPath])
Run Code Online (Sandbox Code Playgroud)

当调用这个函数时,我们可以检查我们传入的indexPaths数组,以了解哪些单元格"即将出现",从而我们应该开始为哪些单元格加载数据.

有关详细说明,请参阅链接 UICollectionViewDataSourcePrefetching