0

我正在使用任务发送请求,以这种方式:

    let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in

                dispatch_async(dispatch_get_main_queue(), {

                    //remove from queue
                    weakself?.popTask(task: task)
    }
}

self.pushTask(task)
task.resume()

我需要在恢复之前将任务推入队列。然后我需要在它完成后弹出它。我得到这个错误的问题:在它自己的初始值中使用的变量

我应该怎么办?是否可以创建一个任务,然后设置它的完成处理程序?

谢谢

4

1 回答 1

0

我认为完成块不能引用任务是正确的,因为它尚未创建。

这就是:

在它自己的初始值中使用的变量

要解决这个问题,只需在设置之前声明常量。例如

let task: NSURLSession
task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in

            dispatch_async(dispatch_get_main_queue(), {

                //remove from queue
                weakself?.popTask(task: task)
}
于 2016-03-21T16:36:02.607 回答