Swift - Grand Central Dispatch vs Blocks/Closures



我正在尝试使用Swift编写HTTP请求,我真的只看到人们在iOS上以某种方式(实际上没有那么多GCD)进行HTTP请求。

如果我想在iOS中发出HTTP请求,最好的方法是什么:使用Grand Central Dispatch或编写一些闭包块还有,我在哪里可以找到一些很棒的例子。从我在网上读到的内容来看,我很难看到其中一种的好处。

目前,我有这个代码:

    let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT
    dispatch_async(dispatch_get_global_queue(priority, 0), { ()->() in
        self.activityIndicator.startAnimating()
        self.authenticateUser()
        dispatch_async(dispatch_get_main_queue(), {
            self.activityIndicator.stopAnimating()
        })
    })

从我在处理器的"调试会话"选项卡中看到的内容中,我可以看到它从线程X跳到线程Y(用于authenticateUser),然后跳回到线程X。这很好——这就是我想要的(我确信)。

你可能知道的任何用Swift编写的GCD或Blocks/Closures的好例子都会非常方便。谢谢

使用NSURLSession发出HTTP请求。使用GCD在应用程序中实现并发(同时发生多件事)。并使用闭包为应用程序提供一个结构。正如你现在看到的,所有这些都可以同时使用。

顺便说一句,请永远记住:所有UI修改都必须在主线程中调用,在代码中,您在并发队列上调用这个self.activityIndicator.startAnimating()

您可以使用NSURLSession。基本用法类似

NSURLSession.sharedSession().dataTaskWithRequest(request) { data, urlResponse, error in
    // handle the response
}.resume()

最新更新