小编Cir*_*ack的帖子

NSURLSession dataTaskWithRequest完成块是否始终在主线程上运行?

在我看来,iOS8.4可能会发生一些变化.我的完成块NSURLSession dataTaskWithRequest是在主线程上运行而不是执行恢复的线程.这是新的和/或正确的行为吗?

有很多贴子像这样,用户想获得在主线程中完成的代码,但我现在发现它的存在已经(打破我的代码).这是一个孤立的样本:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.
    dispatch_async(dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0)) {
        self.threadTest()
    }
    return true
}

func threadTest() {
    println("threadTest on Main Thread: \(NSThread.currentThread().isMainThread)")
    let urlString = "http://www.apple.com/contact/"
    let url = NSURL(string:urlString)
    var request = NSMutableURLRequest(URL: url!)
    var configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
    var session = NSURLSession(configuration: configuration, delegate:nil, delegateQueue:NSOperationQueue.mainQueue())

    var task = session.dataTaskWithRequest(request) {
        (data: NSData!, response: NSURLResponse!, error: NSError!) -> Void in

        if …
Run Code Online (Sandbox Code Playgroud)

multithreading ios swift

1
推荐指数
1
解决办法
4717
查看次数

标签 统计

ios ×1

multithreading ×1

swift ×1