2010-09-06 2 views
1

Je suis à mon esprit. J'essaye de déboguer un crash, et finalement je parviens à le traquer. Ma variable 'minutesLeft' est en quelque sorte en cours de publication.La propriété (retient) objet étant libéré sans être marqué pour la libération

Le problème est que je ne l'ai jamais défini pour être libéré et que la propriété est définie pour conserver. Je ne peux pas comprendre ce qui se passe!

En utilisant la variable zombie, je reçu le message suivant: *** - [CFNumber intValue]: message envoyé à l'instance désallouées 0x728fdd0

et dépisté à la ligne de code suivante:

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

Le problème est lorsque je déclare la propriété ... @property (nonatomic, retain) NSNumber * minutesLeft; Donc la propriété devrait gérer la retenue pour moi!

La valeur est définie à l'aide ...

minutesLeft=[NSNumber numberWithInt:row]; 

et ...

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

Pour dealloc et viewDidUnload je

self.minutesLeft=nil; 

mais puisque je ne partirai pas le point de vue, ceux-ci ne devraient rien affecter.

Vous avez des idées?

Répondre

5

Vous définissez la variable locale qui est le support de la propriété, pas la propriété elle-même. Ainsi, il ne sera pas retenu. Essayez:

self.minutesLeft = [NSNumber numberWithInt:row] 

ou

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

(Notez le self.)

Vous faites correctement quand désaffecter bien (réglage self.minutesLeft = nil).

+0

Ne se dit-il pas que le code écrit par quelqu'un d'autre serait le code qui le ferait correctement. Je pensais que les deux étaient également :( – RonLugge

Questions connexes