我是一個新的程序員,我很迷茫。混淆關閉和完成句柄
我參加了這個在線iOS開發課程,我正在配置集合視圖單元格。 但是,封閉和完成句柄被使用,它從未被提及過。
import UIKit
class PersonCell: UICollectionViewCell {
@IBOutlet weak var img: UIImageView!
func configureCell(imgUrl: String) {
if let url = NSURL(string: imgUrl) {
downloadImg(url)
}
}
func downloadImg(url: NSURL) {
getDataFromURL(url) { (data, response, error) in
dispatch_async(dispatch_get_main_queue()) {() -> Void in
guard let data = data where error == nil else {return}
self.img.image = UIImage(data: data)
}
}
}
func getDataFromURL(url: NSURL, completion: ((data: NSData?, response: NSURLResponse?, error: NSError?) -> Void)) {
NSURLSession.sharedSession().dataTaskWithURL(url) { (data, response, error) in
completion(data: data, response: response, error: error)
} .resume()
}
}
有人可以向我解釋完成處理程序在「getDataFromURL」函數之後執行的操作。關閉還在做什麼?是「(數據,響應,錯誤)」得到傳遞? swift如何知道「數據」在「(data,response,error)」中被假設爲NSData等? ?! 什麼了「dataTaskWithURL」做(停用後則它建立完成處理「
謝謝
閱讀文檔應該有助於https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Closures.html – kye