我正在使用以下代码创建NSMutableArray。当我在“配置文件”模式下运行相同文件时,表明内存泄漏。

SampleArray.h

@interface SampleArray: NSObject {
}
@property (assign, retain) NSMutableArray *array;
@end


SampleArray.m

#import "SampleArray.h"
@implementation SampleArray
@synthesize array;
-(void) viewDidLoad {
    self.array =[ [NSMutableArray alloc] init];
}

-(void) viewWillDisappear:(BOOL)animated {
    [self.array release];
}
@end


使用自动释放时,我将无法在其他函数或方法中访问相同的函数并返回空值。请帮助我找到问题。

最佳答案

在viewWilLDisappear中释放此数组不是一个好主意,应该在dealloc函数中释放。您应该担心过度释放该项目并导致程序崩溃,因为在此ViewController的生存期内,viewWilLDisappear可能会多次调用。

无论如何,您要双重保留该项目,因为您的属性对其具有保留(并使其变为非原子性,而不是赋值),请向您的alloc / init中添加自动释放:

self.array =[[[NSMutableArray alloc] init] autorelease];


并移动

[array release];


到您的dealloc函数。或转换为ARC,不再担心...

07-24 18:53