I want to display some images, when image is not available I want to show a default one. When using the analyze functionality I get warnings about a potential leak. I do under stand that when using imageNamed there is no memory allocated, what would be a nice workaround ? See below a part of my code
if (!isMyFileThere){
image = [UIImage imageNamed:@"default.png"];
}
else{
image = [[UIImage alloc] initWithContentsOfFile:pngFilePath];
}
This is autoreleased
image = [UIImage imageNamed:@"default.png"];
This is not
image = [[UIImage alloc] initWithContentsOfFile:pngFilePath];
You need to do this :
image = [[[UIImage alloc] initWithContentsOfFile:pngFilePath] autorelease];
The rule is if your method name begins with alloc
, new
, copy
or muteableCopy
you own it and need to release it yourself, either with release
or with autorelease
. Anything else isn't yours so you mustn't release it.
If you call retain
on an object, you must release
(or autorelease
) it the same number of times :)