【问题标题】:Can I see which objects are referencing a particular object?我可以查看哪些对象引用了特定对象吗?
【发布时间】:2010-08-17 11:02:47
【问题描述】:

我有一个对象没有被释放的问题。

如果我能找出哪些对象仍在引用应该被释放的对象,那将是非常有帮助的。

我怎样才能得到这些信息?

【问题讨论】:

    标签: iphone objective-c memory-management


    【解决方案1】:

    如果一个对象没有被释放,那不是因为它被另一个对象“引用”,而是因为拥有该对象“所有权”的人没有“释放”它。这称为“内存泄漏”。

    您可以通过阅读Memory Management Programming Guide 了解更多信息。遵循指南中提供的简单规则应该可以帮助您避免内存泄漏。

    要检测内存泄漏,您可以使用Instruments

    我不知道有任何应用程序/工具可以显示哪些对象正在引用特定对象。

    【讨论】:

    • 在我们的例子中,它似乎仍然被另一个对象引用,因为我们确实在重新分配之前释放了我们的对象。
    • 此外,如果我们不这样做,最好检测到没有引用,但引用计数器仍然 > 0;
    • @1st comment:也许您所说的“引用”您的另一个对象是 AutoreleasePool(如果您的对象是自动释放的对象,则可能会发生这种情况)
    • @第二条评论:仪器应该可以帮助您找到那些没有引用但引用计数 > 0 的对象
    • 我们的内存泄漏没有被检测为内存泄漏,因为对象仍然被引用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-18
    • 2011-01-16
    • 2020-12-22
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多