[英]Memory leak when using NSArray componentsSeparatedByString
我正在使用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
數組中的字符串之一,並且泄漏將其標識為泄漏的分配。
首先,嘗試“構建和分析”。 如果那不能解決問題,請使用分配工具准確找出泄漏的對象以及保留/釋放的位置。
您說您分配的所有數組都在dealloc方法中釋放,但是您確定此dealloc被調用了嗎? 也許您實際上是在泄漏包含所有這些數組的對象。
尚未看到有關componentsSeparatedByString增加保留計數的任何信息,但是您確定沒有在類中的其他任何地方保留任何NSArray?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.