我有一个从框架中多次调用的委托方法,我需要它等待再次运行之前显示所有字母。我已经尝试了dispatch_async(dispatch_get_main_queue()
,但该方法的另一个实例在再次调用时会运行。
var myInt = 1
for letter in message.characters {
let delay = 0.1 * Double(NSEC_PER_SEC) * Double(myInt)
let dispatchTime = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
dispatch_after(dispatchTime, dispatch_get_main_queue(), {
self.textView.text = self.textView.text + String(letter)
})
myInt = myInt + 1
}
self.textView.text = self.textView.text + "\n"
答案 0 :(得分:0)
你必须制作两个如下所示的线程然后运行代码..你想先完成的任务和你需要等待的任务可以像下面这样管理:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), {() -> Void in
// waiting task
dispatch_async(dispatch_get_main_queue(), {() -> Void in
// task you have to do first
})
})
你还可以问我任何疑问..
答案 1 :(得分:0)
创建serial
队列
let delegateQueue = dispatch_queue_create("com.domain.delegateQueue", DISPATCH_QUEUE_SERIAL)
在委托方法
中dispatch_async(delegateQueue, ^{
//all the things done in delegate method
})