阻止主队列

时间:2015-02-15 19:52:18

标签: swift

我希望标志更改为'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)

1 个答案:

答案 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
}

但是,阻止主线程等待网络请求是一个非常糟糕的主意。用户肯定会注意到应用程序中的冻结并感到沮丧。我强烈建议你找到一种方法来实现这一点,而不必阻止主线程。