Pouvez-vous envoyer des comptes de rétention à NSLog pour faciliter l'apprentissage?

StackOverflow https://stackoverflow.com/questions/1407517

  •  05-07-2019
  •  | 
  •  

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 -

Était-ce utile?

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]

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top