【问题标题】:Finding when an object is garbage collected using ARC使用 ARC 查找对象何时被垃圾收集
【发布时间】:2012-09-13 15:33:15
【问题描述】:

我目前在我的目标 c 程序中有很大的内存泄漏,我正在尝试找到它并修复它(显然!)我遇到的问题是我使用 ARC 创建了程序,所以我可以'不仅仅是让我自己实现释放或类似的东西来查看对象何时或是否被释放。

更糟糕的是,我不确定我是否完全了解分配工具。我发现太多的内存被分配,然后没有被我认为是在单独的线程中创建的可变字符串释放,但我不知道如何解决这个问题!我以为我已经销毁了对包含它的对象的所有引用,但显然没有?

找到泄漏的确切位置的最佳方法是什么?或者,如果有人有修复,请修复它?

【问题讨论】:

  • 你运行静态分析器了吗?
  • ARC 不是垃圾收集器,所以它下面不会收集对象。

标签: objective-c asynchronous memory-leaks automatic-ref-counting


【解决方案1】:

您可以观看名为“学习工具”的 WWDC 2012 会议(会议 409)。视频是here

【讨论】:

    【解决方案2】:

    您可以通过在他的dealloc 实现中记录一条消息来查找对象何时消失。但如果它没有被释放,你就不会到达那里。

    你说references to the object that contains itseparate thread。如果您使用块来编写在单独线程中执行的代码,请注意您可能通过引用块中的self 创建的保留圈。

    编辑:

    如果您不知道我在说什么,请查看Retain cycle on `self` with blocksblocks, self, retain cycles

    【讨论】:

      猜你喜欢
      • 2011-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多