Nhiều phương thức Cocoa và CocoaTouch có các lệnh gọi lại hoàn thành được thực hiện dưới dạng các khối trong Objective-C và Closures trong Swift. Tuy nhiên, khi thử những thứ này trong Playground, quá trình hoàn thành sẽ không bao giờ được gọi. Ví dụ:
// Playground - noun: a place where people can play
import Cocoa
import XCPlayground
let url = NSURL(string: "http://stackoverflow.com")
let request = NSURLRequest(URL: url)
NSURLConnection.sendAsynchronousRequest(request, queue:NSOperationQueue.currentQueue() {
response, maybeData, error in
// This block never gets called?
if let data = maybeData {
let contents = NSString(data:data, encoding:NSUTF8StringEncoding)
println(contents)
} else {
println(error.localizedDescription)
}
}
Tôi có thể thấy đầu ra của bảng điều khiển trong dòng thời gian Playground của mình, nhưng println
trong khối hoàn thành của tôi không bao giờ được gọi ...