iOS内存泄漏通知

iOS内存泄漏通知,ios,memory-management,memory-leaks,nsmutablearray,Ios,Memory Management,Memory Leaks,Nsmutablearray,我很确定这是导致泄漏的原因,我想得到一些建议。以下是基于我所做工作的代码: NSMutableArray* straVideoTitles; - (void) parseData{ //stuff straVideoTitles = [self getVideoTitle:strData]; //strData contains unparsed data //more stuff } - (NSMutableArray*) getVideoTitles:(NSString*)s

我很确定这是导致泄漏的原因,我想得到一些建议。以下是基于我所做工作的代码:

NSMutableArray* straVideoTitles;

- (void) parseData{
  //stuff
  straVideoTitles = [self getVideoTitle:strData]; //strData contains unparsed data
  //more stuff
}

- (NSMutableArray*) getVideoTitles:(NSString*)strData{
    NSMutableArray *array;
    array = [[NSMutableArray alloc] init];
    //Parse data and populate array
    return array;
}
基于我正在为NSMutableArray分配空间而没有释放它这一事实,这是一个漏洞,对吗?我如何处理这个问题?我是否应该放弃返回值并在getVideoTitles中分配StraveoTitles,然后像这样发布:

- (void) getVideoTitles:(NSString*)strData{
    NSMutableArray *array;
    array = [[NSMutableArray alloc] init];
    //Parse data and populate array
    straVideoTitles = array;
    [array release];
}
还是我完全错了?还是因为我要在dalloc中发布录像带而一切正常?

更改为

返回[数组自动释放]

您可以更改

return array;
进入

或者你可以使用ARC,不再关心它


编辑:第二种方法是可能的,不包括内存泄漏,但代码封装较少,因此可重用性和未来证明较少

从方法返回autorelease对象是一种很好的做法。这称为延迟释放消息

您正在放弃所有权,同时允许方法的调用方在释放返回的数组之前使用它

您的返回声明应为:

return [array autorelease];
有关内存管理的更多信息,请查看此处:

return [array autorelease];