39 votes

Ai-je besoin d'utiliser la méthode dealloc avec l'ARC?

Donc, j'ai de la classe:

@interface Controller : NSObject
{
    UILabel* fileDescription;
}

@property(strong, nonatomic) UILabel* fileDescription;

Ai-je besoin d'utiliser la méthode dealloc où la propriété fileDescription sera égal à néant?
Par exemple:

-(void)dealloc
{
    fileDescription = nil;
}

Si non, qui rejette la mémoire utilisée par fileDescription?

81voto

trojanfoe Points 61927

En général, vous n'avez pas besoin de fournir un sous-classé dealloc méthode de l'ARC gère la durée de vie des variables d'instance.

Cependant il peut être utile d'effectuer le nettoyage autre que de libérer les objets, par exemple pour supprimer un observateur ou de fermer une connexion réseau vers le bas proprement. Vous êtes donc autorisé à sous-classe dealloc en vertu de l'ARC, mais vous n'êtes pas autorisé à appeler [super dealloc] à partir de l'intérieur de la méthode sous-classée.

Dans votre cas particulier, il n'est pas nécessaire, cependant.

9voto

Midhun MP Points 22312

Pas de.

Vous n'avez pas besoin d' dealloc méthode de ARC.

Mais si vous voulez faire quelques tâches de nettoyage lors de votre point de vue est de les congédier ou libéré. C'est le meilleur endroit, Dans ce cas, vous pouvez la mettre en œuvre.

Par exemple:

Vous exécutez une minuterie de votre point de vue et c'est la mise à jour de votre point de vue. Lorsque vous êtes rejeté la vue dont vous avez besoin pour arrêter la minuterie. Dans cette condition, vous pouvez utiliser la méthode dealloc et arrêter la minuterie.

Similaire pour NSNotification d'observateur.

6voto

Anoop Vaidya Points 30399

Si vous utilisez un ARC.

Pas besoin d'utiliser le dealloc et de la libération, le compilateur sait que vos biens et objets sont forts / faibles de sorte qu'il va gérer ça.

EDIT:

dealloc méthode est nécessaire si vous utilisez coreframework objets comme CG.... Même vous créer des observateurs pour les notifications vous devez le supprimer et en dealloc est le meilleur endroit pour removeObserver.

0voto

yen Points 621

Sna est PAS Parce que, avec l'ARC, pas besoin de dealloc.

0voto

Rushi Points 4031

Comme vous êtes à l'aide de l'ARC, vous n'avez pas à utiliser dealloc Compilateur va définir le autoreleasePool selon l'étendue de la propriété,ou de variable de contrôle. Et il vous sera release de la mémoire. Il existe différents types de autoreleasepool en général, nous pouvons définir comme le niveau de la fonction,le niveau de la classe etc etc. Espérons que cette aide.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X