我有时间问题..
我的应用程序使用函数 loadData()
将数据加载到tableview中
并且用户可以使用 postData()
发布数据
两者都以某种方式更改tableView的数据源单元格 . 这些函数正在使用Web请求,因此它们不在主线程上,只是添加到tableView部分 .
loadData()将数据从数据库加载到tableView中
postData()将数据保存到数据库,然后将其添加到tableView
问题是很少但有时我的应用程序由于这两个函数冲突而退出:当用户发布数据但它当前正在加载数据时 .
如何在 loadData()
完成之前阻止 postData()
?
并防止多个postData() - 同时触发?没有使用大量的bools?有一些共同的方式吗?
1 回答
您可以使用信号量,信号量表示正在使用的稀有资源(我们在这里认为是“数据处理,我们一次只有一个”) .
在
postData
和loadData
中,等待信号量(当一个信号可用时,它进入,当没有任何可用信号时,等待一个信号可用) .loadData
也应该有这样的结构 .也尝试使用反应式编程技术,它更现代