/ / UIActionSheet publication après licenciement - iOS, Objective-c

Version UIActionSheet après le rejet - ios, objective-c, uiactionsheet

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 № 1

Appeler 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.