【发布时间】:2016-03-07 11:19:39
【问题描述】:
我想知道我是否偶然发现了一个错误,当他们的UITableViewController 删除时,滑动删除UITableViewCells 永远不会解除分配。
我在我的自定义表格单元格中添加了一个 -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 提交错误报告!
标签: ios objective-c uitableview dealloc