ios - deleteRowsAtIndexPaths : swipe to delete rows never deallocates the cell?

标签 ios objective-c uitableview dealloc

我想知道我是否以某种方式偶然发现了一个错误,即滑动以删除 UITableViewCells 不会在它们的 UITableViewController 执行时解除分配。

我在我的自定义表格单元格中添加了一个 -dealloc 方法,它会输出一条消息。当我在导航 Controller 上按回键时,所有 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

最佳答案

至少使用 Xcode 7.2/iOS 9.2 SimulatorXcode 7.3/iOS 9.3 Device 所有单元都被释放。唯一的变化是解除分配的顺序,删除的单元格最后被解除分配。

关于ios - deleteRowsAtIndexPaths : swipe to delete rows never deallocates the cell?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34055916/

相关文章:

ios - 显示在标签栏后面的 TableView

iphone - 如何测试股票市场 (NYSE) 当前是否开盘/收盘?

ios - FaSTLane Match 环境变量未被 build_app 获取

objective-c - 使用UIImagePickerController获取图片——如何判断保存的是PNG还是JPEG?

Objective-C 和 Windows

iphone - 在运行时调整 UITableView 的单元格

iphone - 即使应用程序未运行,如何调用方法? iOS

ios - 为什么上传到 iTunes 连接时会出现缺少 64 位支持?

ios - iOS 按文本宽度对 UITableView 进行排序

ios - 自动布局 - 当一个 View 具有动态高度时,将两个 View 在 UITableViewCell 中垂直居中