【问题标题】:How to demonstrate memory leak and zombie objects in Xcode Instruments?如何在 Xcode Instruments 中演示内存泄漏和僵尸对象?
【发布时间】:2012-12-09 21:19:47
【问题描述】:

我想在一个类上演示 Xcode Instruments 中的内存泄漏和僵尸对象。我发现很难故意触发,尤其是在 ARC 开启的情况下。你知道我该如何创建它们吗?

【问题讨论】:

  • 你问的是如何使用仪器或如何导致泄漏?
  • 如何导致泄漏 - 这样我就可以展示 Instruments 的好处。

标签: objective-c xcode memory-leaks instruments nszombie


【解决方案1】:

对于泄漏:

创建两个类,A 和 B。A 应该有一个强引用 B 实例的 @property。B 应该有一个强引用 A 实例的 @property。

A *a = [A new];
B *b = [B new];
a.b = b;
b.a = a;

这会造成泄漏。

对于僵尸

创建assign 类型的@property(或__unsafe_unretained 类型的变量。然后:

A *a = [A new];
A.dangerDanger = [NSObject new];

这应该会造成僵尸的情况;更具体地说,是一个悬空指针。

【讨论】:

    【解决方案2】:

    显示泄漏的更优雅的方法是让一个类具有指向自身的强指针

    A* a = [A new];
    a.leakingpointer=a;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-05
      • 2011-10-10
      • 2012-09-21
      • 2016-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多