Я столкнулся с очень странной проблемой. В начале приложения я вызываю API, чтобы получить токен. Он работал нормально до iOS 12. Но в бета-версии iOS 13 закрытие завершения не вызывается, и приложение продолжает накапливать память и, наконец, вылетает.
Однако, когда я запускаю тот же код из симулятора бета-версии Xcode 10 в iOS 13, он работает нормально.
Я прикрепляю код, через который я вызываю API, пожалуйста, помогите мне.
Это функция, в которой я не получаю обработчик завершения и просто теряю управление.
@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
}
И это функция запроса, которую я вызываю.
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)
}
}