簡體   English   中英

使用NSArray組件時發生內存泄漏

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM