我正在尝试处理来自服务器的响应,并且我收到响应,但是,它需要一段时间才能继续其余的工作..令人惊讶的是,打印的东西工作正常,我检查实时服务器的更改,它也工作正常。所以它是由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立即打印,但活动动画似乎并未停止。完成并停止并删除activityIndicator需要10秒钟。自定义动画someAnimation()
也与activityIndicator同时继续。
我知道它是一个异步线程,但是它不必停止activityIndicator并在它到达print("D")
时继续吗?
答案 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 {
...
}
}