对swift中回调的空调用。它如何有用?

对swift中回调的空调用。它如何有用?,swift,Swift,我浏览了AlamoFire库代码,了解了更多关于它的信息,我发现了以下定义: var dataTaskDidReceiveData: ((NSURLSession!, NSURLSessionDataTask!, NSData!) -> Void)? 我想它定义了dataTaskDidReceiveData是一个带有一些参数且没有返回的回调 然后我发现这个回调是以一种我无法理解的“奇怪”方式使用的: func URLSession(session: NSURLSession!,

我浏览了AlamoFire库代码,了解了更多关于它的信息,我发现了以下定义:

 var dataTaskDidReceiveData: ((NSURLSession!, NSURLSessionDataTask!, NSData!) -> Void)?
我想它定义了dataTaskDidReceiveData是一个带有一些参数且没有返回的回调

然后我发现这个回调是以一种我无法理解的“奇怪”方式使用的:

    func URLSession(session: NSURLSession!, dataTask: NSURLSessionDataTask!, didReceiveData data: NSData!) {
        if let delegate = self[dataTask] as? Request.DataTaskDelegate {
            delegate.URLSession(session, dataTask: dataTask, didReceiveData: data)
        }

        dataTaskDidReceiveData?(session, dataTask, data)//??????
    }
这个电话到底是怎么工作的

        dataTaskDidReceiveData?(session, dataTask, data)//??????

dataTaskDidReceiveData
定义为可选闭包<代码>?是可选的链接运算符。因此
dataTaskDidReceiveData?(会话,dataTask,data)
的内容如下:如果
dataTaskDidReceiveData
不是零,则调用
dataTaskDidReceiveData
闭包,否则不执行任何操作

我认为你应该接受下面的答案。