iOS управление памятью UIImage - PullRequest
       10

iOS управление памятью UIImage

0 голосов
/ 14 февраля 2012

, если UIImage является объектом автоматического выпуска, почему, когда я анализирую, он жалуется, что во 2-й строке ниже есть потенциальная утечка, сохраненная в image:

    NSData *data = [[NSData alloc] initWithContentsOfURL: ImageURL];
    UIImage *image = [[UIImage alloc] initWithData: data];

    [data release];
    // Do we want to round the corners?
    image = [self roundCorners: image];

    // Is it PNG or JPG/JPEG?
    // Running the image representation function writes the data from the image to a file
    if([ImageURLString rangeOfString: @".png" options: NSCaseInsensitiveSearch].location != NSNotFound)
    {
        [UIImagePNGRepresentation(image) writeToFile: uniquePath atomically: YES];
    }
    else if(
            [ImageURLString rangeOfString: @".jpg" options: NSCaseInsensitiveSearch].location != NSNotFound || 
            [ImageURLString rangeOfString: @".jpeg" options: NSCaseInsensitiveSearch].location != NSNotFound
            )
    {
        [UIImageJPEGRepresentation(image, 100) writeToFile: uniquePath atomically: YES];
    }

Ответы [ 2 ]

4 голосов
/ 14 февраля 2012

Почему вы говорите, что ваш UIImage выпущен автоматически?Я вижу только

UIImage *image = [[UIImage alloc] initWithData: data];

Вместо этого

UIImage *image = [[[UIImage alloc] initWithData: data] autorelease];

В качестве альтернативы вы можете использовать:

UIImage *tmp = [[UIImage alloc] initWithData: data];

UIImage *image = [self roundCorners: tmp];

[tmp release];

(при условии, что roundCorners возвращает объект с автоматическим освобождением).

1 голос
/ 14 февраля 2012

В вашем коде, во второй строке, ваш UIImage не выпускается автоматически.Как только вы используете методы alloc / init, вы сохраняете.Использование вспомогательного метода, например imageNamed: создает автоматически освобожденный объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...