【问题标题】:Obj-c: Allocating a subclassed object from another object and releasingObj-c:从另一个对象分配一个子类对象并释放
【发布时间】:2014-05-29 16:54:11
【问题描述】:

在使用 Instruments 分析我的应用时,我发现我分配的数组存在泄漏。据我所知,我这样做是正确的,但看起来有问题。

假设我有三个班,M班,A班和B班。

  • 子类 B 有一个独特的 NSArray 属性,它不属于它的超类 A。
  • M 分配子类 B 的实例。
  • 在类 M 中,访问子类 B 的实例,并从该类访问和分配 NSArray 属性。
  • 在子类 B 中,dealloc 被覆盖,并为 NSArray 提供了一个 release,而 super dealloc 在它之下。
  • 当我发布 M 类时,我得到 NSArray 对象的泄漏。

我的理解是我能够从类 M 中分配 NSArray 对象,例如:

tempClassB.myNSArray = [[NSArray alloc] initWithArray:finalArray];

而且我可以覆盖子类 B 中的 dealloc 以释放它自己的对象,该对象在它的超类 A 中不存在。我可以调用 super dealloc 来调用类 A 中的 dealloc:

- (void) dealloc{

    [myNSArray release];

    [super dealloc];

}

【问题讨论】:

    标签: object subclass release dealloc alloc


    【解决方案1】:

    我遇到的问题是在 M 类中分配 B 类将使 M 类负责释放它。我应该在 B 类中分配对象并像我一样释放,或者在 M 类的对象的 dealloc 中释放。

    【讨论】:

      猜你喜欢
      • 2017-01-25
      • 1970-01-01
      • 2017-02-14
      • 1970-01-01
      • 2016-06-24
      • 2011-12-24
      • 1970-01-01
      • 2013-04-03
      • 2023-02-15
      相关资源
      最近更新 更多