0

我正在 ViewVillAppear 中加载我的 plist 文件,如下所示。在第一次加载时,我没有泄漏,但是按下其他 tabBar 按钮/项目并返回到此视图时,我得到了泄漏。我已经在 dealloc 中发布了这个 NSMutableArray 但是它仍然泄漏。有点困惑为什么。(theProducts3 是一个 NSMutableArray,就像 .h 中的 ivar 一样,它不是 @property 或保留的)

- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];  

NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; NSString *plistPath = [rootPath stringByAppendingPathComponent:@"basket.plist"];
theProducts3 = [[NSMutableArray alloc] initWithContentsOfFile:plistPath];

NSLog(@"Number of objects in item array %i", [theProducts3 count]);
}

在这里释放 NSMutable 数组。

-(void)dealloc{
[theProducts3 release];
[super dealloc];
}

任何指针最感激!谢谢...

4

1 回答 1

1

dealloc不是 的倒数viewWillAppear:。是 的倒数alloc。的倒数viewWillAppear:viewWillDisappear:

发生的事情是,当您的视图出现时,您正在分配内存,然后您将转到另一个视图控制器,然后返回,您的视图再次出现,您正在分配更多内存,从而泄漏原始内存。

如果只要您的视图在内存中,您的数组只需要挂起,那么将其分配viewDidLoad:并释放到viewDidUnload:and中dealloc。请记住在释放实例变量nil后将其设置为。

于 2012-05-14T22:08:24.707 回答