Загрузка URL-адреса при сбое Alamofire с помощью [NSHTMLWebDelegate responsedsToSelector:]: сообщение отправлено на освобожденный экземпляр

Я загружаю URL с помощью Alamofire и отображаю полученный HTML-код в текстовой метке. Около 15% загрузок вызывают сбой приложения с помощью EXC_BAD_ACCESS. Включение зомби дает мне [NSHTMLWebDelegate respondsToSelector:]: message sent to deallocated instance

Вот мой код:

func downloadArticle(completed: @escaping DownloadComplete) {
  Alamofire.request(articleURL).responseString { response in
    if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) {
      self.article = utf8Text
      print("HTML: \(String(describing: self.article))")
    } else {
      self.article = "Sorry, an error occurred, please go back and try again"
      EZLoadingActivity.hide(false, animated: true)
    }
    completed()
  }
}

В блоке завершения я конвертирую utf8 в атрибутивную строку, закодированную для отображения HTML:

if var attrArticle = self.article?.html2AttributedString {    
if let lowVision = self.lowVision {
  print("Low Vision?: \(lowVision)")
  attrArticle = attrArticle.changeHTMLFont(attrArticle)
  EZLoadingActivity.hide(true, animated: true)
  self.attrArticleStr = attrArticle
  print("Low Vision Article Loaded")
} else {
  print("Attr Article Loaded")
  EZLoadingActivity.hide(true, animated: true)
  self.attrArticleStr = attrArticle
    }
  } else {
    self.article = "Sorry, an error occurred, please go back and try again"
    EZLoadingActivity.hide(false, animated: true)
  }
  DispatchQueue.main.async {
    if let attrArticle = self.attrArticleStr {
      print("attributed text loaded from downloadArticle")
      /********CRASH EXC_BAD_ACCESS TRACED TO HERE*********/
      self.articleLbl.attributedText = attrArticle
      /***************************************************/
    } else if let article = self.article {
      print("attributed text not loaded. Error?")
      self.articleLbl.text = article
    }
}

Изменить - мне удалось определить 7 как точку сбоя, хотя трассировка не указывает ни на какие строки кода. Я не знаю, как устранить ошибку - насколько я могу судить, я не делаю ничего, что могло бы вызвать релиз слишком рано, но я должен быть:

0   Malloc  +1  1   00:58.566.055   UIFoundation    -[NSHTMLReader _loadUsingWebKit]
1   Retain  +1  2   00:58.574.124   WebKitLegacy    WebDocumentLoaderMac::setDataSource(WebDataSource*, WebView*)
2   Release -1  1   00:58.948.238   WebKitLegacy    WebDocumentLoaderMac::decreaseLoadCount(unsigned long)
3   Retain  +1  2   00:59.270.606   WebKitLegacy    WebDocumentLoaderMac::setDataSource(WebDataSource*, WebView*)
4   Retain  +1  3   00:59.271.357   WebKitLegacy    WebDocumentLoaderMac::setDataSource(WebDataSource*, WebView*)
5   Release -1  2   00:59.345.277   WebKitLegacy    WebDocumentLoaderMac::~WebDocumentLoaderMac()
6   Release -1  1   00:59.348.356   WebKitLegacy    WebDocumentLoaderMac::decreaseLoadCount(unsigned long)
7   Release -1  0   00:59.763.655   UIFoundation    -[NSHTMLReader dealloc]
8   Zombie  -1      00:59.833.813   WebCore  HandleDelegateSource(void*)

0 ответов

Другие вопросы по тегам