gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 03:20:45 25 4
gpt4 key购买 nike

我想知道我是否以某种方式偶然发现了一个错误,即滑动以删除 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com