链接performBatchUpdate调用UICollectionView的正确方法是什么,以便一个更新在下一个更新开始之前完成,以防止同时触发多个触发,从而导致IndexPath不同步(由于删除与插入混在一起)

最佳答案

我不太确定您要在这里寻找什么。如果您是想确保在执行performBatchUpdate时如何确保多个线程不会互相覆盖,则应确保在主线程上均已调用performBatchUpdate。例如。:

DispatchQueue.main.async {
    collectionView.performBatchUpdates({
        // perform a bunch of updates.
    }, completion: { (finished: Bool) in
        // anything that needs to happen after the update is completed.
    }
}

另外,如果您正在寻找一种在同一线程中多次调用performBatchUpdates的方法(是的,您需要它有点奇怪,但是由于第3方API,我有一个地方需要使用使用),因为performBatchUpdates已完成,因此您可以尝试将第二个performBatchUpdates调用放在第一个的完成处理程序中。
    self.collectionView.performBatchUpdates({
        // perform a bunch of updates.
    }, completion: { (finished: Bool) in
        self.collectionView.performBatchUpdates({
            // perform a bunch of other updates.
        }, completion: { (finished: Bool) in
        })
    })

10-07 12:17