трассировка стека обработки исключений в VC ++

Хотя вы можете запускать цикл выполнения вручную (или для асинхронного кода, который не требует цикла запуска, использовать другие методы ожидания, такие как семафоры отправки), «встроенный» способ, который мы предоставляем на игровых площадках для ожидания асинхронных работа заключается в том, чтобы импортировать фрейм XCPlayground и установить XCPlaygroundPage.currentPage.needsIndefiniteExecution = true. Если это свойство было установлено, когда ваш верхний уровень игровой площадки заканчивается, вместо остановки игровой площадки мы будем продолжать вращать основной цикл запуска, поэтому асинхронный код имеет шанс запустить. В конечном итоге мы закончим игровую площадку после тайм-аута, который по умолчанию составляет 30 секунд, но который можно настроить, если вы откроете помощник редактора и покажите помощника временной шкалы; таймаут находится в нижнем правом углу.

Например, в Swift 3 (используя URLSession вместо NSURLConnection):

import UIKit
import PlaygroundSupport

let url = URL(string: "http://stackoverflow.com")!

URLSession.shared.dataTask(with: url) { data, response, error in
    guard let data = data, error == nil else {
        print(error ?? "Unknown error")
        return
    }

    let contents = String(data: data, encoding: .utf8)
    print(contents!)
}.resume()

PlaygroundPage.current.needsIndefiniteExecution = true

Или в Swift 2:

import UIKit
import XCPlayground

let url = NSURL(string: "http://stackoverflow.com")
let request = NSURLRequest(URL: url!)

NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.currentQueue()) { response, maybeData, error in
    if let data = maybeData {
        let contents = NSString(data:data, encoding:NSUTF8StringEncoding)
        println(contents)
    } else {
        println(error.localizedDescription)
    }
}

XCPlaygroundPage.currentPage.needsIndefiniteExecution = true
0
задан Adem Aygun 25 February 2015 в 14:44
поделиться