我正在使用Alamofire在我的应用中发送HTTP请求。我正在使用TabBarViewController,在第一个视图的ViewDidLoad中,我发送了一个请求。同样在ViewWillDisappear中,我发送另一个请求。但是,当我更改标签时,我发现它的行为意外。
func sendHttpCommand(parameter: NSDictionary) {
Alamofire.request(.GET, URL, parameters: (parameter as! [String: AnyObject]))
.response {
request, response, data, error in
print(request)
}
}
viewDidLoad() {
let dict: NSDictionary = ["value": 0]
sendHttpCommand(dict)
}
viewWillDisappear(animated: Bool) {
let dict: NSDictionary = ["value": 1]
sendHttpCommand(dict)
}
当我切换标签时,在正常情况中,我的控制台将打印出来
Optional(NSMutableURLRequest {URL: xxxxx/value=0})
Optional(NSMutableURLRequest {URL: xxxxx/value=1})
Optional(NSMutableURLRequest {URL: xxxxx/value=0})
Optional(NSMutableURLRequest {URL: xxxxx/value=1})
Optional(NSMutableURLRequest {URL: xxxxx/value=0})
Optional(NSMutableURLRequest {URL: xxxxx/value=1})
Optional(NSMutableURLRequest {URL: xxxxx/value=0})
Optional(NSMutableURLRequest {URL: xxxxx/value=1})
但是,当我快速切换标签 时,我的控制台会打印出来
Optional(NSMutableURLRequest {URL: xxxxx/value=0})
Optional(NSMutableURLRequest {URL: xxxxx/value=1})
Optional(NSMutableURLRequest {URL: xxxxx/value=1})
Optional(NSMutableURLRequest {URL: xxxxx/value=0})
Optional(NSMutableURLRequest {URL: xxxxx/value=0})
Optional(NSMutableURLRequest {URL: xxxxx/value=1})
Optional(NSMutableURLRequest {URL: xxxxx/value=1})
Optional(NSMutableURLRequest {URL: xxxxx/value=0})
有什么想法吗?
答案 0 :(得分:2)
alamofire请求执行异步。
请阅读此处以了解asyncs和同步: Difference between dispatch_async and dispatch_sync on serial queue?
您可以在更改标签时取消您的alamofire请求,但请求未完成。为此,您需要Alamofire Manager。