NSCache - отбрасывание контента - PullRequest
0 голосов
/ 24 октября 2018

Я использую 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 в других местах приложения, и у меня нет этой проблемы.Что может быть причиной?

...