我有子类NSMutableURLRequest如下:
class CustomNSMutableURLRequest: NSMutableURLRequest {
convenience init(url : URL) {
self.init(url: url)
self.httpShouldHandleCookies = false
self.httpMethod = "GET"
print("Custom Request!")
}
}
这导致self.init(url: url)
线上的无限循环。使用super
而不是self
也不起作用。我怎样才能解决这个问题?
不幸的是,您无法覆盖子类中的精确便利初始化程序。
你可能需要写这样的东西:
class CustomNSMutableURLRequest: NSMutableURLRequest {
convenience init(url : URL) {
self.init(url: url, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 60)
self.httpShouldHandleCookies = false
self.httpMethod = "GET"
print("Custom Request!")
}
}
但我不确定是否真的需要子类化,我会像qzxswpoi一样添加一些工厂方法:
URLRequest
根据我的经验,您无法安全地继承NSURLRequest。如果你这样做,你会得到NSURLSession的迷人不端行为,其中一个请求的响应与不同的请求错误地关联。
找到一种不同的方法,例如使用为NSURLProtocol设计的方法将任意字符串附加到请求,并附加包含UUID的字符串,然后将其用作字典键。或者将会话标识符与每个任务标识符结合使用。无论哪种方式。