j'utilise UIActionSheet
dans mon projet:
self.actionSheet = [[[UIActionSheet alloc] initWithTitle:nil] autorelease];
C'est l'objet:
@property (nonatomic, retain) UIActionSheet *actionSheet;
Et après le UIActionSheet
est licencié je veux le libérer et le faire nil
avec ce code:
[self.actionSheet release];
self.actionSheet = nil;
Mais quand je le fais, l'application se bloque, avez-vous une idée du pourquoi?
Réponses:
2 pour la réponse № 1Appeler manuellement release
c'est le problème. Lors de l'utilisation du sélecteur synthétisé d'une propriété, l'objet précédent est correctement libéré.
Vous devriez soit changer votre code pour:
self.actionSheet = nil;
ou, si vous préférez libérer manuellement, définissez la variable d'instance sous-jacente sur nil
, ainsi:
[self.actionSheet release];
_actionSheet = nil;
Comme suggéré dans les commentaires, vous devez migrer votre code vers ARC. Si vous ne pouvez pas migrer tout le code, vous pouvez toujours en migrer la plupart et conserver uniquement le code "problématique" dans MRC.