Итак, я делаю сетевые звонки, чтобы получить изображение, и с его помощью я показываю своего рода видео.Через некоторое время я вижу потерю памяти и влияние энергии:
Через некоторое время мое приложение сломалось, и я получил: «Завершено из-за ошибки памяти»
До этого я получил эту ошибку из метода вызывающего изображения: «ошибка из dataResponse: Операция не может быть завершена. На устройстве не осталось места»
Это два метода, которые я использую:
class InstallationViewController: BaseViewController {
func imageCaller(url: String , success: @escaping (UIImage) -> Void, failure: @escaping () -> Void) {
let handler = AuthenticateHandler()
self.urlSession = URLSession(configuration: URLSessionConfiguration.default, delegate: handler, delegateQueue: OperationQueue.main)
self.imageThumbnailTask = urlSession?.dataTask(with: URL(string:url)!) { data, res, err in
if err != nil {
print("error from dataResponse:\(err?.localizedDescription ?? "Response Error")")
failure()
return
}
DispatchQueue.main.async {
if let imageData = data, let image = UIImage(data: imageData) {
success(image)
URLCache.shared.removeAllCachedResponses()
}
}
}
self.imageThumbnailTask?.resume()
}
func imageThumbnailcall() {
self.indicaotrTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.HandleOverTime), userInfo: nil, repeats: false)
self.imageCaller( url: self.isShowingThermal ? self.thermalUrl : self.visualUrl, success: { (image) in
self.indicaotrTimer?.invalidate()
DispatchQueue.main.async{
self.imageLoaderIndicator.stopAnimating()
self.backGroundImageView.image = image
}
if self.isInVC {
self.imageThumbnailcall()
}
}) {
self.imageLoaderIndicator.stopAnimating()
}
}
Стоит отметить, что эта строка:
let handler = AuthenticateHandler()
self.urlSession = URLSession(configuration: URLSessionConfiguration.default, delegate: handler, delegateQueue: OperationQueue.main)
для протокола дайджеста