我有一个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                
        }
    }
}