Сужение утечки памяти - PullRequest
       11

Сужение утечки памяти

1 голос
/ 08 января 2012

Я все еще ищу способ устранить утечки памяти.На данный момент у меня есть утечка в этой строке кода.

return [UIImage imageWithContentsOfFile:path];

Кто-нибудь идея?

Спасибо заранее!

- (UIImage *)imageAtIndex:(NSUInteger)index {
    // use "imageWithContentsOfFile:" instead of "imageNamed:" here to avoid caching our images
    NSString *imageName = [self imageNameAtIndex:index];

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:imageName];
    //NSString *path = [[NSBundle mainBundle] pathForResource:imageName ofType:@"jpg"];

    return [UIImage imageWithContentsOfFile:path];
}

- (void)configurePage:(ImageScrollView *)page forIndex:(NSUInteger)index

{

page.index = index;
page.frame = [self frameForPageAtIndex:index];

// To use full images instead of tiled images, replace the "displayTiledImageNamed:" call
// above by the following line:
// [page displayImage:[self imageAtIndex:index]];
[page displayImage:[self imageAtIndex:index]];

}

1 Ответ

3 голосов
/ 08 января 2012

Когда утечки идентифицируют строку кода как утечку, не утверждает, что указанная строка кода является фактической утечкой . Только эта строка кода является источником распределения, которое было просочено .

Таким образом, изображение, возвращаемое imageWithContentsOfFile:, чрезмерно сохраняется где-то еще, и ваша задача выяснить, где.

Что обычно довольно просто; установите флажок «сохранить отслеживание» [IIRC] на маленькой панели настройки инструмента «Распределения», запустите свое приложение и затем щелкните один из просочившихся UIImages, чтобы увидеть список того, где именно изображение было сохранено и выпущено. Одно из этих удержаний не будет сбалансированным, и это ваша утечка.

Хотя это и немного ортогонально, я описываю, как это сделать в посте об использовании Heapshot Analyais для поиска утечек.

...