gpt4 book ai didi

ios - 关闭 View 时取消 UICollectionView 更新

转载 作者:行者123 更新时间:2023-11-28 15:01:33 25 4
gpt4 key购买 nike

我最近报告了我的应用程序崩溃,我发现发生了什么,我需要一些帮助/最佳实践/最佳方法来解决这个问题。

我有一个推送的 UICollectionViewController,它在 viewDidLoad 上查询服务器以获取一些数据以填充 UICollectionView

我的问题是,如果我按下这个 UICollectionViewController 然后快速点击后退按钮 - 后台线程仍然继续获取服务器数据,但是当获取数据时我更新了 UICollectionViewperformBatchUpdates() 和我的应用程序崩溃。

发生这种情况是因为应用程序试图在不再可见的 View 上重新加载数据。

此处的最佳做法是什么?

如果我要回到以前的 VC,有什么方法可以“中止” Collection View 更新吗?

类似于:

if self.isMovingFromParentViewController { /* abort any update here? */ }

谢谢

最佳答案

您可以使用 DispatchWorkItem 来实现这一点,如下所示

let backgroundQueue = DispatchQueue.global()

var backgroundTask: DispatchWorkItem!

backgroundTask = DispatchWorkItem { [weak self] in
// Perform background task
if !backgroundTask.isCancelled {
return to main Queue
}

backgroundTask = nil // resolve strong reference cycle
}
backgroundQueue.async(execute: backgroundTask)

// When you want to cancel the task
backgroundQueue.async { [weak backgroundTask] in
backgroundTask?.cancel()
}

关于ios - 关闭 View 时取消 UICollectionView 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48865504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com