我正在使用以下代码来创建 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 可能会被多次调用。
无论如何,您双重保留了该项目,因为您的属性对其进行了保留(并使其成为非原子的,而不是分配),将自动释放添加到您的分配/初始化中:
self.array =[[[NSMutableArray alloc] init] autorelease];
然后移动
[array release];
到你的dealloc函数。或者转换为 ARC,不再担心...
关于iphone - NSMutableArray 存在内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12076852/