Maintenant que j'ai compris le concept du compte, je vais essayer d'expliquer ceci, le compte se réfère au nombre de réclamations de propriété que vous avez en suspens sur un objet et peut être vérifié avec l'aide d'une fonction appelée -retainCount, mais vous ne devriez jamais prêter attention à la valeur du compte de maintien car il n'est jamais correct et toujours confus,
vous ne savez pas ce qui est conservé, pourquoi il est conservé, qui le conserve, quand il a été conservé, etc.
Par exemple :
You'd think that [NSNumber numberWithInt:1] would have a retainCount of 1. It doesn't. It's 2.
You'd think that @"Foo" would have a retainCount of 1. It doesn't. It's 1152921504606846975.
You'd think that [NSString stringWithString:@"Foo"] would have a retainCount of 1. It doesn't. Again, it's 1152921504606846975.
En fait, puisque tout peut retenir un objet (et donc modifier son retainCount), et puisque vous n'avez pas la source de la plupart du code qui fait fonctionner une application, le retainCount d'un objet n'a aucune signification.
Si vous essayez de savoir pourquoi un objet n'est pas désalloué, utilisez l'outil Leaks dans Instruments. Si vous cherchez à savoir pourquoi un objet a été désalloué trop tôt, utilisez l'outil Zombies dans Instruments.
Mais n'utilisez pas -retainCount. C'est une méthode vraiment inutile.