утечка памяти в приложении iPhone - PullRequest
0 голосов
/ 14 июня 2010

Есть идеи, почему этот код вызывает утечку памяти? Как видите, у меня заканчиваются идеи о том, что я могу сделать, чтобы остановить это.

- (void)viewWillAppear:(BOOL)animated {

    [super viewWillAppear:animated];

    NSArray *allSketches = [project.sketches allObjects];
    NSMutableArray *temp = [[NSMutableArray alloc] initWithArray:allSketches];

    if(sketchesArray != nil) [sketchesArray release];

    [self setSketchesArray:temp];

    [allSketches release];
    allSketches = nil;
    [temp release];
    temp = nil;

}

Я также выпускаю наброски Array внутри viewDidDissapear. Я не использую viewDidLoad и dealloc для инициации / освобождения этих объектов, поскольку то, что я делаю, требует от меня использования viewWillAppear и viewDidDissapear.

Спасибо

Ответы [ 3 ]

1 голос
/ 14 июня 2010

Исправлено с помощью этого вместо:

NSArray *allSketches = [project.sketches allObjects];
NSMutableArray *temp = [[NSMutableArray alloc] initWithArray:allSketches];

[self setSketchesArray:temp];

[temp release];

Хотя я помню, что делал это, и раньше это не работало ... Странно ... Хотя, кажется, все еще есть некоторые утечки памяти из CoreGraphics. Это нормально?

0 голосов
/ 14 июня 2010

Я не вижу утечки, но у вас есть несколько возможных перевыпусков.

Выпуск не-nil sketchesArray должен управляться внутри setSketchesArray. И это не похоже, что у вас есть право владения allSketches ...

0 голосов
/ 14 июня 2010

Это будет выпущено где-то еще, когда вы закончите с этим?

[self setSketchesArray:temp];

В частности, вы выпускаете SketchesArray в этой функции, но делаете ли вы это в другом месте, когда закончите с представлением?

...