Я использую NSCache
для хранения UIImage
объектов.Я использую UITableView
для отображения изображений и доступа к NSCache
следующим образом:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: CellIdentifiers.ImageTableCell, for: indexPath) as! ImageTableViewCell
let brand = brands[indexPath.row]
cell.centerLabel.text = brand.brand
cell.leftImageView.image = nil
if let image = self.brandLogosCache.object(forKey: brand.id as NSString) {
cell.leftImageView.image = image
} else if noLogosBrands.contains(brand.id) {
return cell
} else {
ImagesManager.getBrandLogo(byLogoName: brand.logo!) { (error, imageData) in
guard error == nil else {
print("Could not get logo")
return
}
if let image = UIImage(data: (imageData?.data)!) {
self.brandLogosCache.setObject(image, forKey: brand.id as NSString)
DispatchQueue.main.async {
self.brandsTableView.reloadData()
}
} else {
print("Could not form logo from incomming data")
self.noLogosBrands.insert(brand.id)
}
}
}
return cell
}
У меня также есть extension
из UIImage
, что соответствует NSDiscardableContent
.Он реализован просто для обеспечения соответствия, потому что если у меня его нет, контент отбрасывается при переходе приложения в фоновый режим:
extension UIImage : NSDiscardableContent {
public func beginContentAccess() -> Bool {
return false
}
public func endContentAccess() {
print("End content access")
}
public func discardContentIfPossible() {
print("Discarding")
}
public func isContentDiscarded() -> Bool {
return false
}
}
Проблема в том, что я получаю контент все время, и он не останавливается.удаление, загрузка изображений, сохранение их и повторное удаление.Я использую NSCache в других местах приложения, и у меня нет этой проблемы.Что может быть причиной?