Pouvez-vous envoyer des comptes de rétention à NSLog pour faciliter l'apprentissage?
Question
Juste curieux de savoir s'il est quand même possible d'afficher un compte de rétention d'objets à l'aide de NSLog. Je veux juste les imprimer sur console pour aider à comprendre comment la conservation / libération fonctionne dans un code simple?
cheers -gary -
La solution
Non seulement c'est possible, mais c'est très facile aussi:
NSLog(@"retain count=%d",[obj retainCount]);
Autres conseils
Je pense que vous rencontrez peut-être un problème avec NSString dans lequel les messages de retenue et de libération peuvent être envoyés à une constante de chaîne, mais ils n’ont en fait aucun effet ni modifient les objets retenueCount. Le code ci-dessous fonctionne, changez-le pour utiliser NSString et conservez / relâchez sans effet.
Code:
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSMutableString *myString = [[NSMutableString alloc] initWithString:@"AB"];
NSLog(@"RC: %d", [myString retainCount]);
[myString retain];
NSLog(@"RC: %d", [myString retainCount]);
[myString release];
NSLog(@"RC: %d", [myString retainCount]);
[myString release];
[pool drain];
return 0;
}
Sortie:
Running…
TESTBED[12306:a0f] RC: 1
TESTBED[12306:a0f] RC: 2
TESTBED[12306:a0f] RC: 1
gary
Dans la console du débogueur, vous pouvez taper: print (unsigned int) [thing retentionCount]