AFHTTPSessionManager子类Singleton与Swift中的配置

时间:2015-02-19 21:10:37

标签: swift afnetworking-2

我正在尝试使用Swift创建AFHTTPSessionManager的子类。根据文档,建议创建子类的单例实例。我理解如何在Swift中创建单例,但我需要能够使用基本URL初始化我的单例。

class ZRUserAuthenticationHTTPSessionManager: AFHTTPSessionManager {
  class var sharedManager: ZRUserAuthenticationHTTPSessionManager {

    struct StaticManager {
      static var instance: ZRUserAuthenticationHTTPSessionManager? = nil
      static var onceToken: dispatch_once_t = 0
    }

    if (StaticManager.instance == nil) {
      dispatch_once(&StaticManager.onceToken) {
        StaticManager.instance = ZRUserAuthenticationHTTPSessionManager(baseURL: myURL)
      }
    }

    return StaticManager.instance!
  }
}

如何使用可配置参数初始化我的单例实例?

由于

1 个答案:

答案 0 :(得分:0)

我已经想出了如何做到这一点。

public class func createSharedManager(baseURL: NSURL!) -> ZRUserAuthenticationHTTPSessionManager {
  StaticManager.instance = ZRUserAuthenticationHTTPSessionManager(baseURL: baseURL)

  return StaticManager.instance!
}

public class var sharedManager: ZRUserAuthenticationHTTPSessionManager? {
  return StaticManager.instance
}

private struct StaticManager {
 static var instance: ZRUserAuthenticationHTTPSessionManager? = nil
}