【发布时间】:2018-07-21 01:47:21
【问题描述】:
我的时间有问题..
我的应用程序使用函数 loadData() 将数据加载到 tableview 中
并且用户可以使用postData()发布数据
两者都以某种方式更改了 tableView 的数据源 + 单元格。这些函数使用网络请求,因此它们不在主线程上,只是添加到 tableView 部分。
loadData() 将数据库中的数据加载到tableView中
postData() 将数据保存到数据库,然后将其添加到 tableView
问题是很少但有时我的应用程序由于这两个功能冲突而退出:当用户发布数据但当前正在加载数据时。
在loadData() 完成之前,如何阻止postData()?
并且 + 防止超过 1 个 postData()-s 同时触发?不使用很多布尔值?有什么常用的方法吗?
【问题讨论】:
-
布尔如果没有正确同步可能会有很多问题,如果同步,你会有性能损失(但很小),如果你愿意,你也可以尝试自旋锁,但我认为它有点不安全,因此像 Semaphores 一样使用 Apple 的 API 本身更安全,应该从旧线程迁移到调度。
标签: swift function asynchronous