全球Alamofire请求(AppDelegate)

时间:2018-01-09 20:58:57

标签: ios swift alamofire

我的应用程序需要通过Alamofire执行多个URL请求,但我想在视图上独立执行这些任务或用户在UI中执行的操作。这基本上意味着“在后台”,因此实际执行任务的处理程序在完成之前不会被取消初始化。 我的想法是通过某种类方法从共享的 AppDelegate 调用这些请求。我现在只有一个问题:

实施此方案的最佳方法是什么?

我的实际知识会产生如下:

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

   class func someKindOfClassRequest() {
   // ...
   }
   func someKindOfRequest() {
   // ...
   }
// ...
}

我会用这种方式调用方法:

AppDelegate.someKindOfClassRequest()

或使用非类func,这当然不会解决问题:

let sharedDelegate = UIApplication.shared.delegate as! AppDelegate
AppDelegate.someKindOfRequest()

1 个答案:

答案 0 :(得分:3)

正如评论中所提到的,Alamofire使用基于闭包的完成,因此即使调用对象被取消初始化,它们也不会被取消初始化。为了保持代码组织良好,为什么不创建一个执行这些操作的类而不是将其放入AppDelegate?例如,创建一个名为BankgroundRequestController的类:

class BackgroundRequestController {

    static let sharedInstance = BackgroundRequestController()

    class func someKindOfClassRequest() {
        // ...
    }
}

然后你可以调用这些函数:

BackgroundRequestController.sharedInstance.someKindOfClassRequest()