deleteRowsAtIndexPaths:滑动删除行永远不会取消分配单元格?

时间:2015-12-03 00:48:41

标签: ios objective-c uitableview dealloc

我想知道我是否在某种程度上偶然发现了一个错误,即当他们UITableViewCells执行时,滑动删除UITableViewController并不会解除分配。

我在自定义表格单元格中添加了一个-dealloc方法,该方法会记录一条消息。当我按下导航控制器时,所有6条消息都被注销。

如果我滑动删除一个(或更多),然后按回,则仅记录5个。所以我注销了已被删除的单元格的指针地址,以供将来参考。现在当我回到任何时候暂停执行时,我可以进入lldb提示符:

po 140382950334240
<TableLeakCell: 0x7fe67852a490; baseClass = UITableViewCell; frame = (-375 176; 375 44); text = 'Chris'; hidden = YES; autoresize = W; gestureRecognizers = <NSArray: 0x7fe678530d70>; layer = <CALayer: 0x7fe67852a860>>

这应该已经解除分配!单元格的x.position正好是-(tableView.width)hidden=YES。因为在动画完成后单元格仍然处于该位置。或者它可能正在排队等待重用?无论哪种方式,它都是永远存在的,Apple的文档中没有任何关于在调用deleteRowsAtIndexPaths后手动销毁单元格的内容。

概念验证项目: https://github.com/iOSDigital/UITableViewLeak

1 个答案:

答案 0 :(得分:0)

至少使用Xcode 7.2/iOS 9.2 SimulatorXcode 7.3/iOS 9.3 Device所有单元格都会被取消分配。只有更改是释放的顺序,删除的单元格最后被释放。

相关问题