【问题标题】:deleteRowsAtIndexPaths doesn't release the cell?deleteRowsAtIndexPaths 不释放单元格?
【发布时间】:2011-04-13 14:05:29
【问题描述】:

我的表格视图中有一个功能,即当您点击单元格时,它会在点击的单元格下方加载更多单元格,当您再次点击同一单元格时,这些添加的单元格将被删除。

但是我有一个奇怪的行为,当我调用下面的方法从表格视图中删除添加的单元格时,单元格的 dealloc 方法没有被调用..(我在 dealloc 方法中放置了一个 NSLog)

[tableView deleteRowsAtIndexPaths:indexPathArray withRowAnimation:UITableViewRowAnimationTop]

当我调用 insertRowsAtIndexPaths 时,正在创建新的单元格实例,在仪器中我检查了以前的实例是否保留在内存中,并且正在一次又一次地创建新实例。

所以请告诉我为什么 deleteRowsAtIndexPaths 不为已删除的单元格调用释放?以及针对此问题的一些解决方案。我很担心,因为应用程序的真实和虚拟内存消耗都在不断增加...

【问题讨论】:

    标签: iphone uitableview memory-management


    【解决方案1】:

    您是否在cellForRowAtIndexPath: 中使用UITableView 的dequeuereusablecellwithidentifier: 方法来创建新单元格?

    如果没有,这是正常的。 UITableViews 将单元格保存在内存中,以便重复使用它们并避免一直分配/释放。

    你应该看看这个教程,例如:http://www.mobisoftinfotech.com/blog/iphone/introduction-to-table-view/

    【讨论】:

    • 我使用的是 deque... 方法,但是我在分配单元格时错过了 autorelease 方法,所以问题现在已经解决了。谢谢您的回复..
    猜你喜欢
    • 2016-03-07
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 2011-07-20
    • 2019-07-26
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多