我正在使用带有Leaks模板的Instruments应用程序运行,它告诉我该行存在泄漏:
NSArray *tempFavs = [tempFavString componentsSeparatedByString:@"|"];
我见过其他一些人也遇到类似的问题,但还没有任何解决方案。似乎该数组应该自动释放,我不必担心。我分配的所有数组都在dealloc方法中释放。这是所有相关代码:
NSArray *tempFavoritesArray = [appPreferences arrayForKey:[NSString stringWithFormat:@"%@ %@ favorites", server, project]];
favoritesArrayDisplay = [[NSMutableArray alloc] initWithObjects:nil];
cenXsArray = [[NSMutableArray alloc] initWithObjects:nil];
cenYsArray = [[NSMutableArray alloc] initWithObjects:nil];
viewScalesArray = [[NSMutableArray alloc] initWithObjects:nil];
currentPresetsArray = [[NSMutableArray alloc] initWithObjects:nil];
rastersArray = [[NSMutableArray alloc] initWithObjects:nil];
empty = NO;
selected = NO;
if ([tempFavoritesArray count] == 0 || tempFavoritesArray == nil)
{
[favoritesArrayDisplay addObject:@"No favorites saved."];
empty = YES;
}
for (int i=0; i<[tempFavoritesArray count]; i++)
{
NSString *tempFavString = [NSString stringWithString:[tempFavoritesArray objectAtIndex:i]];
NSArray *tempFavs = [tempFavString componentsSeparatedByString:@"|"];
if ([tempFavs count] > 2)
{
[favoritesArrayDisplay addObject:[tempFavs objectAtIndex:0]];
[cenXsArray addObject:[tempFavs objectAtIndex:1]];
[cenYsArray addObject:[tempFavs objectAtIndex:2]];
[viewScalesArray addObject:[tempFavs objectAtIndex:3]];
[currentPresetsArray addObject:[tempFavs objectAtIndex:4]];
[rastersArray addObject:[tempFavs objectAtIndex:5]];
}
}
谁看过这个吗?
最佳答案
所有泄漏都告诉您,该行代码分配的一个或多个对象后来被泄漏。它并没有显示导致实际泄漏的代码行,而是显示了后来导致泄漏的分配的代码行。
即您可能过度保留了tempFavs
数组中的字符串之一,并且泄漏将其标识为泄漏的分配。
首先,尝试“构建和分析”。如果那不能解决问题,请使用“分配”工具准确找出泄漏的对象以及保留/释放的对象。
关于iphone - 使用NSArray组件时发生内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7166273/