Donc j'ai de la classe:
@interface Controller : NSObject
{
UILabel* fileDescription;
}
@property(strong, nonatomic) UILabel* fileDescription;
Dois-je utiliser la méthode dealloc où la propriété fileDescription sera égale à zéro?
Par exemple:
-(void)dealloc
{
fileDescription = nil;
}
Sinon, qui rejettera la mémoire utilisée par fileDescription?
En général, vous n'avez pas besoin de fournir une méthode dealloc
sous-classée car ARC gère la durée de vie des variables d'instance.
Cependant, il peut être utile d'effectuer un nettoyage autre que la libération d'objets, par exemple pour supprimer un observateur ou fermer proprement une connexion réseau. Vous êtes donc autorisé à sous-classer dealloc
sous ARC, mais vous n'êtes pas autorisé à appeler [super dealloc]
depuis la méthode sous-classée.
Dans votre cas particulier, ce n'est cependant pas nécessaire.
Non.
Vous n'avez pas besoin de la méthode dealloc
dans ARC
.
Mais si vous souhaitez effectuer certaines tâches de nettoyage lorsque votre vue est fermée ou libérée. C'est le meilleur endroit, dans ce cas, vous pouvez le mettre en œuvre.
Par exemple:
Vous exécutez une minuterie dans votre vue et elle met à jour votre vue. Lorsque vous quittez la vue, vous devez arrêter cette minuterie. Dans cette condition, vous pouvez utiliser la méthode dealloc et arrêter le minuteur à cet endroit.
Similaire pour NSNotification
observateur.
Si vous utilisez ARC.
Pas besoin d'utiliser dealloc et release, le compilateur sait que votre propriété et vos objets sont forts/faibles donc il va les gérer.
ÉDITER:
dealloc
est requise si vous utilisez des objets coreframework comme CG...
& CF...
. Même si vous créez des observateurs pour les notifications, vous devez les supprimer et dealloc
est le meilleur endroit pour supprimerObserver.
Ans est NON Parce qu'avec ARC, pas besoin de désallouer.
Comme vous utilisez ARC, vous n'avez pas besoin d'utiliser dealloc
Complier définira l'autoreleasePool en fonction de l'étendue de la propriété, de la variable ou du contrôle. Et ça va release
la mémoire. Il existe différents types d'autoreleasepool en général, nous pouvons les définir comme niveau de fonction, niveau de classe, etc. J'espère que cela vous aidera.