didReceiveMemoryWarning从UITableView层次结构中删除单元格/视图

时间:2019-03-20 09:52:37

标签: ios uitableview childviewcontroller didreceivememorywarning

我设置了一个UITableView,其中每个单元格都有一个子UIViewController

我尝试使用dequeueReusableCell(with identifier:)重用单元格,并在willDisplay celldidEndDisplaying cell方法上添加/删除子视图控制器。

我更喜欢使用的另一件事是不使单元出队并像这样存储/访问它们:

let cell: FeedCell
if let cached = feedCells[feedItem.uuid]{
   cell = cached
}else{
   cell = Bundle.main.loadNibNamed("FeedCell", owner: nil, options: nil)?.first as! FeedCell
   cell.feedItem = feedItem
   feedCells[feedItem.uuid] = cell
}

基本上,属性feedCells是字典[String: FeedCell],当我重用单元格时,它是[String: UIViewController]

我确定我的问题的关键是这本字典和didReceiveMemoryWarning

每当我在应用程序中收到内存警告时,该词典中的可见单元格或ViewController都会从视图层次结构中删除,即使它们在词典中包含strong引用也是如此。它们确实存在于字典中,因此我可以重新加载表视图并再次显示它们。我现在在didReceiveMemoryWarning上要做的事情。

但是我担心的是,即使我们一直对视图有很强的引用,为什么也会从这样的层次结构中删除视图呢?

0 个答案:

没有答案