RonLugge
RonLugge

Reputation: 5184

Property (retain) object being released without ever being flagged for release

I'm at my wits end. I'm trying to debug a crash, and finally I manage to track it down. My 'minutesLeft' variable is somehow being released.

Problem is, I never set it to release, and the property is set to retain. I can't figure out what is going on!

Using the zombie variable, I got the following message: *** -[CFNumber intValue]: message sent to deallocated instance 0x728fdd0

and tracked it down to the following line of code:

NSLog(@"MeterViewController minutesLeft %i", [minutesLeft intValue]);

The problem is when I declare the property... @property (nonatomic, retain) NSNumber *minutesLeft; So the property should be handling the retain for me!

The value is set using...

minutesLeft=[NSNumber numberWithInt:row];

and...

minutesLeft=[NSNumber numberWithInt:(((timeLeft)/60)%60)];

For dealloc and viewDidUnload I have

self.minutesLeft=nil;

but since I'm not leaving the view, those shouldn't be effecting anything.

Anyone have any ideas?

Upvotes: 1

Views: 167

Answers (1)

Jakob Borg
Jakob Borg

Reputation: 24515

You are setting the local variable that is the backing for the property, not the property itself. Thus it doesn't get retained. Try:

self.minutesLeft = [NSNumber numberWithInt:row]

or

self.minutesLeft = [NSNumber numberWithInt:(((timeLeft)/60)%60)];

(Note the self.)

You are doing it correctly when deallocating though (setting self.minutesLeft = nil).

Upvotes: 5

Related Questions