【发布时间】: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