I am facing a very strange problem. At the start of the app, I call API to get the token. It was working fine till iOS 12. But, on iOS 13 beta version, the completion closure is not called and app keep on accumulating memory and finally crashes.
However, when I run the same code from Xcode 10 to iOS 13 beta simulator, it works fine.
I am attaching the code through which I call API, please help me.
This is the function where I don't get the completion handler and the control just lost.
@discardableResult
static func requestObject<T: Decodable>(urlRequest: URLRequest, sessionManager: SessionManager? = nil, keyPath: String? = nil, decoder: JSONDecoder = JSONDecoder(), queue: DispatchQueue? = nil, completion: @escaping (NetworkResult<T>) -> Void) -> URLSessionTask? {
let request = self.request(urlRequest: urlRequest, sessionManager: sessionManager)
.responseDecodableObject(decoder: decoder, keyPath: keyPath, queue: queue) { (response: DataResponse<T>) in
switch response.result {
case .failure(let error): completion(NetworkResult.failure(error))
case .success(let value): completion(NetworkResult.success(value))
}
}
return request.task
}
And this is the request function that I call.
static func request(urlRequest: URLRequest, sessionManager: SessionManager?) -> DataRequest {
guard let sessionManager = sessionManager else {
return Alamofire.request(urlRequest)
.validate { (request, response, data) -> Request.ValidationResult in
return self.validation(request: request, response: response, data: data)
}
}
return sessionManager.request(urlRequest)
.validate { (request, response, data) -> Request.ValidationResult in
return self.validation(request: request, response: response, data: data)
}
}