Bonjour a tous,
Je suis en train de faire quelques tests avec Cocoa en Objective C afin de comprendre un peu plus le fonctionnement des retain count.
Voici mon main.c
Sachant que la méthode name de la classe Personne ne fait que renvoyer le pointeur vers la NSString qui contient le nom. D'ailleurs la voici:
Voici le résultat de l'éxecution:
Je ne comprends pas pourquoi la NSString s'affiche alors que j'ai envoyé le message release a aPerson. Il aurait fallu que le programme crashe, non?
Merci!
Je suis en train de faire quelques tests avec Cocoa en Objective C afin de comprendre un peu plus le fonctionnement des retain count.
Voici mon main.c
Bloc de code:
#import <Cocoa/Cocoa.h>
#import "Person.h"
int main(int argc, char *argv[])
{
Person *aPerson= [[Person alloc] init];
NSString *theName;
NSLog(@"Person retain =%ld\n", [aPerson retainCount]);
theName= [aPerson name];
NSLog(@"name= %@\n", theName);
NSLog(@"Person retain =%ld\n", [aPerson retainCount]);
[aPerson release];
NSLog(@"name= %@\n", theName);
NSLog(@"Person retain =%ld\n", [aPerson retainCount]);
return NSApplicationMain(argc, (const char **) argv);
}
Bloc de code:
-(NSString*)name {
return name;
}
Voici le résultat de l'éxecution:
Bloc de code:
Person retain =1
name= John
Person retain =1
name= John
Person retain =1152921504606846975
Merci!