快速调用回调函数。它如何有用?
问题描述:
我在AlamoFire LIB代码一目了然学习的东西更多一点,我已经发现了这样的定义:快速调用回调函数。它如何有用?
var dataTaskDidReceiveData: ((NSURLSession!, NSURLSessionDataTask!, NSData!) -> Void)?
我想它定义了dataTaskDidReceiveData是一些PARAMS和没有返回的回调。
然后我看到,这个回调是用来在一个“奇怪”的办法,我无法理解:
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?(session, dataTask, data)
的内容如下:如果dataTaskDidReceiveData
不是零呼叫dataTaskDidReceiveData
收尾,否则什么都不做。
我认为你应该接受下面的答案。 – Rob 2015-12-02 18:56:47