函数在收到响应后需要一段时间才能继续
Function Takes While To Continue After Receiving Response
我正在尝试处理来自服务器的响应,我收到了响应,但是,需要一段时间才能继续其余的工作。令人惊讶的是,打印内容工作正常,我检查了实时服务器的变化,它也工作正常。所以这是由 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 立即打印出来,但 activity 动画似乎并没有在两者之间停止。完成并停止并删除 activityIndicator 大约需要 10 秒。自定义动画 someAnimation()
也与 activity 指标同时继续。
我知道这是一个异步线程,但它不是必须停止 activityIndicator 并在它到达 print("D")
时继续吗?
我认为您正在后台线程上执行 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 {
...
}
}
我正在尝试处理来自服务器的响应,我收到了响应,但是,需要一段时间才能继续其余的工作。令人惊讶的是,打印内容工作正常,我检查了实时服务器的变化,它也工作正常。所以这是由 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 立即打印出来,但 activity 动画似乎并没有在两者之间停止。完成并停止并删除 activityIndicator 大约需要 10 秒。自定义动画 someAnimation()
也与 activity 指标同时继续。
我知道这是一个异步线程,但它不是必须停止 activityIndicator 并在它到达 print("D")
时继续吗?
我认为您正在后台线程上执行 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 {
...
}
}