iOS Alamofire stop all requests

前端 未结 8 1598
刺人心
刺人心 2020-12-05 07:45

Is there any way I can for example say:

Alamofire.Manager.cancelAllRequests() or Alamofire.Manager.sharedInstance.cancelAllRequests()?

8条回答
  •  南笙
    南笙 (楼主)
    2020-12-05 08:15

    If it helps, I got cnoon's answer to work on my own instance of an Alamofire.Manager. I have a singleton class called NetworkHelper which has a property called alamoFireManager, which handles all my network requests. I just call the NSURSession invalidateAndCancel() on that alamoFireManager property, reset my manager in setAFconfig(), then I'm good to go.

    class NetworkHelper {
    
    private var alamoFireManager : Alamofire.Manager!
    
    class var sharedInstance: NetworkHelper {
        struct Static {
            static var instance: NetworkHelper?
            static var token: dispatch_once_t = 0
        }
    
        dispatch_once(&Static.token) {
            Static.instance = NetworkHelper()
        }
    
        return Static.instance!
    }
    init(){
        setAFconfig()
    }
    
    func setAFconfig(){
        let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
        configuration.timeoutIntervalForResource = 4
        configuration.timeoutIntervalForRequest = 4
        alamoFireManager = Alamofire.Manager(configuration: configuration)
    }
    func cancelAllRequests() {
        print("cancelling NetworkHelper requests")
        alamoFireManager.session.invalidateAndCancel()
        setAFconfig()
    }
    

提交回复
热议问题