Obj-c:从另一个对象分配一个子类对象并释放
Posted
技术标签:
【中文标题】Obj-c:从另一个对象分配一个子类对象并释放【英文标题】:Obj-c: Allocating a subclassed object from another object and releasing 【发布时间】: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];
【问题讨论】:
【参考方案1】:我遇到的问题是在 M 类中分配 B 类将使 M 类负责释放它。我应该在 B 类中分配对象并像我一样释放,或者在 M 类的对象的 dealloc 中释放。
【讨论】:
以上是关于Obj-c:从另一个对象分配一个子类对象并释放的主要内容,如果未能解决你的问题,请参考以下文章