NSCache-丢弃内容

时间:2018-10-24 14:37:36

标签: ios uitableview uiimage nscache

我正在使用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的{​​{1}}符合UIImage。它的实现只是为了具有一致性,因为如果我不知道它的内容,它将在后台运行的应用程序中被丢弃:

NSDiscardableContent

问题是我一直都在丢弃内容,并且它不会停止丢弃,下载图像,保存图像并再次丢弃它们。我在应用程序的其他地方使用了NSCache,没有这个问题。可能是什么原因?

0 个答案:

没有答案