功能需要在接收响应后继续

时间:2016-04-14 09:08:50

标签: ios xcode swift httpresponse

我正在尝试处理来自服务器的响应,并且我收到响应,但是,它需要一段时间才能继续其余的工作..令人惊讶的是,打印的东西工作正常,我检查实时服务器的更改,它也工作正常。所以它是由xcode引起的。

在收到回复并检查其是否成功后,我会检查..

  // Received HTTP Response

  if let status = json["status"].string {

        if status == "success" {
                   print("C")  
                   activityView.stopAnimating()
                   activityView.removeFromSuperview()

                   self.someAnimation()
                   print("D")
        } else {
            ...
        }
   }

令人惊讶的是C& D立即打印,但活动动画似乎并未停止。完成并停止并删除activityIndi​​cator需要10秒钟。自定义动画someAnimation()也与activityIndi​​cator同时继续。

我知道它是一个异步线程,但是它不必停止activityIndi​​cator并在它到达print("D")时继续吗?

1 个答案:

答案 0 :(得分:1)

我认为您在后台线程上执行UI任务会导致未定义的行为。避免这种情况的一种方法是将您的UI方法调用包装在dispatch_async

// Received HTTP Response

if let status = json["status"].string {

    if status == "success" {
               print("C")  
               dispatch_async(dispatch_get_main_queue(), {
                    activityView.stopAnimating()
                    activityView.removeFromSuperview()

                    self.someAnimation()
               });

               print("D")
    } else {
        ...
    }
}