我希望标志更改为'false'但它保持'true'。我如何阻止我的主队列?你能用代码解释一下吗?
var flag = true;
var url = NSURL(string: "http://www.google.com")
var task = NSURLSession.sharedSession().dataTaskWithURL(url!){
(data,response,error) in
var urlContent = NSString(data: data, encoding: NSUTF8StringEncoding)
flag = false
}
task.resume()
println(flag)
答案 0 :(得分:1)
如果你想创建一个阻止当前线程的同步请求,你应该只使用NSURLConnection' s sendSynchronousRequest:returningResponse:error:。如果要在完成之前阻止,则没有理由创建下载任务。
let request = NSURLRequest(URL: url!)
var response: NSURLResponse?
var error: NSError?
if let data = NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: &error) {
let urlContent = NSString(data: data, encoding: NSUTF8StringEncoding)
}
else {
// handle error
}
但是,阻止主线程等待网络请求是一个非常糟糕的主意。用户肯定会注意到应用程序中的冻结并感到沮丧。我强烈建议你找到一种方法来实现这一点,而不必阻止主线程。