2009-09-09 18 views
12

Dans la méthode dealloc d'une classe, comment est-ce que j'imprimerais l'ID (ou un autre identificateur unique) pour l'instance désaffectée?L'ID d'instance d'impression à NSLog?

- (void)dealloc { 
    NSLog(@"_deallocing: ??"); 
    [super dealloc]; 
} 

Est-ce possible? J'essaie juste d'avoir un peu plus de feedback dans la console comme aide à l'apprentissage.

merci beaucoup -Gary-

Répondre

6

Essayez ceci:

- (void)dealloc { 
    NSLog(@"_deallocing: %@", self); 
    [super dealloc]; 
} 

Ceci affichera un peu plus d'informations sur l'objet à la console. Selon la classe, vous obtiendrez une adresse mémoire et le nom de la classe ou quelque chose de plus détaillé. Si vous voulez donner quelque chose de plus détaillée dans vos propres classes, remplacer cette méthode et retour tout ce que vous souhaitez:

-(NSString *)description { 
    return @"Something useful about this object"; 
} 
+0

Excellent, alors est-ce que je peux supposer que "self" accède simplement à la description par défaut de la classe? – fuzzygoat

+0

C'est vrai - la fonction NSLog() remplace% @ par la description de l'objet donné. La méthode -description de NSObject fournit la valeur par défaut . Voir ici pour plus d'informations sur les choses utiles à faire avec NSLog: http://www.cocoadev.com/index.pl?NSLog – iKenndac

+0

Et si vous voulez l'ID pour une classe différente? Par exemple. J'ai une variable de membre 'NSMutableArray' et je voudrais imprimer son ID d'instance. –

52

Si vous voulez plus précisément l'adresse mémoire de l'objet (que je suppose que pourrait être considéré comme un " identifiant » si vous ne l'avez pas mis en œuvre dans votre classe), vous pouvez utiliser ceci:

NSLog(@"deallocing %p", self); 

cela peut être assez utile si vous avez plus d'une instance d'une classe particulière et essayez de déterminer ce qui est obtenir dealloc'd quand.

+0

Merci dmkash, c'est un bon point, très apprécié. – fuzzygoat

+0

Documentation sur les spécificateurs de format de chaîne: https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html – LopSae