我正在使用以下代码创建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,不再担心...