【问题标题】:Autorelease with elements in a UITableViewCell - memory leak使用 UITableViewCell 中的元素自动释放 - 内存泄漏
【发布时间】:2023-04-10 20:25:01
【问题描述】:

在 UITableView 委托的“cellForRowAtIndexPath”方法中,如果单元格不存在,我将分配它,并且在此单元格中,我正在创建一个新的活动微调器,如下所示:

UIActivityIndicatorView *actView = [[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray ] autorelease];

我正在使用 Leaks 来检测我的程序中的内存泄漏,并且由于某种原因,这会作为泄漏出现,即使它是自动释放的。单元本身也是自动释放的。有没有人在泄漏仪器中出现自动释放变量的经验,以及如何解决这些问题?

仅当我将其添加到单元格的 contentView 时才会泄漏。如果我只是创建它并顺其自然,泄漏仪器不会报告任何问题。

此外,如果有帮助,这是 Leaks 显示的此内存位置的历史记录。看起来它在某些时候会收到额外的保留消息?我的代码中没有这样做。

【问题讨论】:

    标签: iphone objective-c memory-leaks


    【解决方案1】:

    包含单元格是否被释放?

    如果没有,您是否曾经从包含单元格中删除 UIActivityIndi​​catorView 实例?

    【讨论】:

    • 文档说 UITableViewCell 的 contentView 负责在删除单元格时释放其中的所有视图。我不认为开发者负责维护内存,除非它被特别保留。
    • 是的——但如果开发人员过度保留对象或视图层次结构没有正确拆除,那么您最终会出现泄漏。
    【解决方案2】:

    我得出的结论是,这是由于模拟器造成的 - 我在实际设备上没有收到这些泄漏。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-27
      • 2012-06-08
      • 2017-03-13
      • 1970-01-01
      • 1970-01-01
      • 2011-01-27
      相关资源
      最近更新 更多