我想知道如果我以某种方式偶然发现刷卡删除的错误UITableViewCells
永远不会释放他们的UITableViewController
。deleteRowsAtIndexPaths:通过滑动删除行不会释放单元格?
我在我的自定义表格单元格中添加了一个-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
不错的演示。用Apple提交错误报告! – matt