NSMutableArray释放/销毁

时间:2010-01-29 21:54:20

标签: objective-c memory-management nsmutablearray

我的函数中的以下代码(在循环中运行)导致我的程序在崩溃之前使用越来越多的内存。我做错了什么?

- (void) processTrackValues:(NSMutableArray*) tags {  
    NSImage* trackArt = [tags objectAtIndex:5];  
    NSMutableArray* tempArtArray = [[NSMutableArray alloc] init];  
    [tempArtArray addObject:trackArt];  
    [tempArtArray release];  
}

我也尝试过:

- (void) processTrackValues:(NSMutableArray*) tags {  
    NSImage* trackArt = [tags objectAtIndex:5];  
    NSMutableArray* tempArtArray = [[NSMutableArray alloc] init];  
    [tempArtArray addObject:trackArt];  
    [trackArt release];  
    [tempArtArray release];  
}

编辑:以下是有关周围代码的更多信息。我还为样本添加了更多代码以获得更大的图片。

  • trackArt是指向此函数的其中一个参数的NSImage指针。
  • NSImage指向的trackArt对象是在此函数之外创建的。
  • 我正在分配和释放循环的每次迭代tempArtArray(因为循环的每次迭代都会调用函数)

2 个答案:

答案 0 :(得分:2)

(现在发布两次)方法是无稽之谈。在方法结束时,该方法完全没有完成。

发布真实代码。

特别是,您如何实际创建NSImage个实例?你怎么知道这种特殊方法导致膨胀并最终崩溃?

答案 1 :(得分:0)

你可以发布周围的循环代码以帮助获得更大的图片吗?

您是否为每次循环迭代分配和释放tempArtArray?如果是这样,您可以在循环外部分配一次并重复使用它吗?

如何创建trackArt个对象?