Multithreading 无法在单独的线程中调用委托方法

Multithreading 无法在单独的线程中调用委托方法,multithreading,swift,nsurlconnection,Multithreading,Swift,Nsurlconnection,我已经找过了,但找不到答案 单独的线程如下所示: if let urlConnection = NSURLConnection(request: self.request, delegate: self, startImmediately: false) { dispatch_async(dispatch_get_global_queue(Int(QOS_CLASS_USER_INTERACTIVE.value), 0)){ println("begin") le

我已经找过了,但找不到答案

单独的线程如下所示:

if let urlConnection = NSURLConnection(request: self.request, delegate: self, startImmediately: false) {

     dispatch_async(dispatch_get_global_queue(Int(QOS_CLASS_USER_INTERACTIVE.value), 0)){
     println("begin")
     let queue = NSOperationQueue()
     urlConnection.setDelegateQueue(queue)
     NSURLConnection.sendAsynchronousRequest(self.request, queue: queue) {  (response:NSURLResponse!, data:NSData!, error:NSError!) -> Void in

dispatch_async(dispatch_get_main_queue()) {
     println("then")
     if self.loadDataFinish {
         //UI code here
     }
但在委托方法中,什么都不会发生:

func connectionDidFinishLoading(connection: NSURLConnection) {
    loadDataFinish = true
}
此队列是否在不调用Finish方法的情况下终止

urlConnection是在单独的线程中创建的还是从单独的线程中创建的

setDelegateQueue没有帮助吗

开始打印,几秒钟后再打印。请求完成

分离线程何时终止

func request(baseApiRequest:BaseApiRequest,apiRequestCompletionHandler:(baseApiResponse:BaseApiResponse) -> Void){
    var start = NSDate().timeIntervalSince1970
    dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), { ()->() in
        var httpController = HttpController()
        var baseApiResponse = BaseApiResponse()
        httpController.getHttpResponse(baseApiRequest, httpCompletionHandler: { (data) -> Void in
            if let finalData = data {
                baseApiResponse = baseApiRequest.getBaseApiResponse().mapFromJson(finalData)
                println("request data valid map to baseApiResponse")
            }
            apiRequestCompletionHandler(baseApiResponse:baseApiResponse)
            println("request deltaTime: \(NSDate().timeIntervalSince1970 - start)")
        })
    })
}



 func getHttpResponse(baseApiRequest:BaseApiRequest,httpCompletionHandler:(data:NSData!) -> Void){
    if let requestUrl = NSURL(string:baseApiRequest.httpRequestUrl()){
        let request = NSMutableURLRequest(URL: requestUrl)
        request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
        request.HTTPMethod = baseApiRequest.httpRequestMethodType().rawValue
        request.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData
        request.timeoutInterval = 22.22

        switch(baseApiRequest.httpRequestMethodType()){
        case BaseApiRequest.HttpRequestMethodType.Post:

            var err: NSError?
            request.HTTPBody = NSJSONSerialization.dataWithJSONObject(baseApiRequest.getHttpRequestParamsAsDictionary(),
                options: NSJSONWritingOptions.allZeros, error: &err)
        default:
            break
        }

        var sessionConfig = NSURLSessionConfiguration.defaultSessionConfiguration()
        let session = NSURLSession(configuration: sessionConfig)

        let task = session.dataTaskWithRequest(request) {
            data, response, error in
            if let httpResponse = response as? NSHTTPURLResponse {
                if httpResponse.statusCode != 200 {
                    println("response was not 200: \(response)")
                }
                 println("response : \(response)")
            }
            if (error != nil) {
                println("error submitting request: \(error)")
            }
            httpCompletionHandler(data:data)
        }
        task.resume()
    }
}