Рассмотрим этот псевдо-код:IPhone: Вопрос об освобождении переменной
// an image is initialized
UIImage *imagePX = [[UIImage alloc]initWithContentsOfFile:... bla bla
imagePX = [self rotateImage:imagePX]; //A
[self doStuff:imagePX]; //B
Тогда у меня есть метод rotateImage:
- (UIImage*) rotateImage:(UIImage*)source {
... rotate the image... draw on context...
[source drawInRect... bla bla
...
UIImage *rotatedImage = UIGraphicsGetImageFromCurrentImageContext();
return rotatedImage;
}
Мой вопрос не: imagePX не выпускалась. Поскольку изображение передается методу RotateImage, я думал, что могу просто его освободить, после использования его в команде [source drawInRect ...], поскольку я вернул бы rotatedImage в метод, но если я это сделаю, программа приведет к сбою, поскольку переменная imagePX должна существовать, так что строка A может оценить.
Другая проблема заключается в том, что изображение будет перенаправлено на B в другую процедуру. Итак, каков наилучший способ заставить его работать, не теряя следа imagePX и утечки?
Каков наилучший подход?
конечно! Я забыл изображениеWithContentsOfFile! Я рассматривал тот, который я использовал, и [UIImage imageNamed ...], но этот последний кэширует изображение, используя память, которую я пытаюсь сохранить, потому что я пытаюсь поместить свое приложение в диету памяти. Благодаря! – SpaceDog