我需要将我的Alamofire调用包装在dispatch_async中吗?

TIM*_*MEX 9 http ios swift alamofire

func authenticate(completion:(success: Bool) -> Void) {
let qos = Int(QOS_CLASS_USER_INITIATED.value)
dispatch_async(dispatch_get_global_queue(qos, 0)){ () -> Void in
    Alamofire.request(.POST, CONSTANTS.Domain+"/accounts", parameters: ["" : ""]).responseJSON { (req, res, json, error)  in
         dispatch_async(dispatch_get_main_queue()){
               completion(success: true)
         }
    }
}
}
Run Code Online (Sandbox Code Playgroud)

或者,我可以省略调度并保持我的代码简单吗?

Sch*_*cal 5

Alamofire旨在实现异步.另一方面,如果该方法具有回调,则很可能是异步的.所以,是的,你可以省去dispatch_async调用.

  • 同意,尽管假设如果它有一个异步运行的闭包,则越来越不正确.历史计数器示例是枚举块和谓词,但是使用Swift函数编程,我们使用同步闭包很多.此外,使用Alamofire内部块不需要调度回主队列的事实是一个实现细节,只能通过阅读文档/代码来确认.通常情况下,当你有异步闭包时,它们不会在主线程上运行,但对于Alamofire来说却是如此. (3认同)