方法不等到再次运行

时间:2016-08-02 12:56:36

标签: ios swift

我有一个从框架中多次调用的委托方法,我需要它等待再次运行之前显示所有字母。我已经尝试了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"

2 个答案:

答案 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
})