Фрагмент кода:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell: BroadCastFeedTableViewCell = broadCastTableView.dequeueReusableCell(withIdentifier: "broadCastFeedCell") as BroadCastFeedTableViewCell
cell.singlePicImageView.kf.setImage(with: URL(string: (self.broadCastArray[indexPath.row].images_url?[0])!), placeholder: nil, options: nil, progressBlock: nil)
{ (theImage, error, cache, url) in
if theImage != nil{
let imageHeight = self.getAspectRatioOfDownloadedImages(resolution: self.broadCastArray[indexPath.row].image_resolution![0])
cell.collectionContentViewHeightConstraint.constant = imageHeight
cell.layoutSubviews()
cell.layoutIfNeeded()
}else {
let placeHolderCenterCordi = UIView().getViewRelationWithSuperSuperView(viewControllerView: cell.collectionContentView,
subView: cell.singlePicImageView, subObjFrame: cell.singlePicImageView.frame)
cell.singlePicImageView.addPlaceHolderImageView(cordinates: placeHolderCenterCordi.center)
}
self.broadCastTableView.rowHeight = UITableViewAutomaticDimension
}
}
В приведенном выше коде я использовал библиотеку Kingfisher для загрузки изображения с удаленного сервера, всякий раз, когда следующий код загружает определенные изображения (GIF, JPEG, PNG), которые могут иметь большой размер (приблизительно 2-5 МБ), приложение завершает работу из-за проблемы с памятью. В iPhone 5s он завершается мгновенно, как только запускается приложение, а в других моделях iPhone (7, 6s) он завершается после прокрутки в течение определенного времени. Я также проверил распределение и утечку, но я мало что понял/нашел об этой проблеме.
Я также прикрепил график профилирования. Это показывает, что таких утечек памяти нет, но из-за какой-то проблемы приложение завершает работу: