我有一个tableView . 每当它显示最后一个单元格时,它会向其中加载更多内容(较旧的帖子) .
如果没有更多的帖子,那么应用程序会设置一个bool,以防止更多的加载请求 .
但是,如果用户快速向上滚动几次,则应用程序会因崩溃而导致大量加载请求 .
我想通过使用bool来防止这种情况:
因此,如果应用程序在第一个加载请求仍在进行时获得新的加载请求,那么我想取消它 .
Bools工作正常,但我听说信号量更安全/更好 .
我应该使用信号量吗?如果是这样,有没有办法不让信号量等待,相反,如果有一个已经在进行的过程,取消?
func loadPosts(){
if (isLoadingMoreScrollContent){
return
}
self.isLoadingMoreScrollContent = true // THE BOOL
self.activityIndicator.startAnimating()
self.profileFunctions.loadMorePosts(lastLoadedPostId: self.lastLoadedPostId) { response, posts in
DispatchQueue.main.async {
if let response = response {
bla bla... adding the posts
}
self.activityIndicator.stopAnimating()
self.isLoadingMoreScrollContent = false // THE BOOL
}
}
}