Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Incorrect decrement of the reference count

I have the following problem: In one flow of the execution I use alloc, and on the other flow, alloc is not needed. At the end of the if statement, in any case, I release the object. When I do 'build and Analize' I get an error: 'Incorrect decrement of the reference count of an object is not owned by the caller'.

How to solve that?

UIImage *image; 

int RandomIndex = arc4random() % 10;

if (RandomIndex<5) 
{
    image = [[UIImage alloc] initWithContentsOfFile:@"dd"];
}
else 
{
    image = [UIImage imageNamed:@"dd"];
}


UIImageView *imageLabel =[[UIImageView alloc] initWithImage:image];
[image release];
[imageLabel release];
like image 255
iddober Avatar asked Dec 31 '25 07:12

iddober


1 Answers

You should retain the image in the second condition:

image = [[UIImage imageNamed:@"dd"] retain];

This way, both possible exits out of the condition will have an object with a reference count of one, from your point of view.

Otherwise, you are trying to release an already autoreleased object!

like image 199
Chris Cooper Avatar answered Jan 01 '26 22:01

Chris Cooper