作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试构建一个依赖于 CoreData
中的某些项目的应用程序.我让它与外部数据源同步,一切正常。
我的应用程序使用三种方法,并且是单 View 应用程序:
syncData()
createSpinner()
showResult()
createSpinner
取决于
CoreData
中有一些数据- 并且只需要运行一次
showResult
取决于已创建的“微调器”,并在创建时调用一次以初始化自身,以及每次旋转我的微调器时
SyncData
在
viewDidLoad()
,以及
createSpinner()
在
viewDidAppear()
(因为它会根据屏幕大小改变大小)
createSpinner()
,因此该应用程序看起来毫无用处。我如何“等待”第一次同步,或者设置一些东西来检查是否有一些数据?
最佳答案
解决办法是强制syncData()
& createSpinner()
在同一个线程中运行
您可以通过创建一个串行队列并将这两种方法异步分派(dispatch)到其中来做到这一点
let serialQueue = dispatch_queue_create("com.mycompany.myview", DISPATCH_QUEUE_SERIAL);
override func viewDidLoad() {
super.viewDidLoad()
dispatch_async(serialQueue) {
syncData()
}
}
override func viewDidAppear() {
super.viewDidAppear()
dispatch_async(serialQueue) {
createSpinner()
}
}
关于ios - 快速控制应用程序流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36383501/
我是一名优秀的程序员,十分优秀!