Hé les gars, supposons que le code suivant:compte de référence Objective-C et AutoRelease
int main (int argc, const char * argv[])
{
//[...]
Rectangle* myRect = [[Rectangle alloc] init];
Vector2* newOrigin = [[[Vector2 alloc] init] autorelease]; // ref count 1
[newOrigin setX: 50.0f];
[myRect setOrigin: newOrigin]; // ref count 2
[myRect.origin setXY: 25.0f :100.0f]; // ref count goes to 3... why ?
[myRect release];
[pool drain];
return 0;
}
origine du rectangle est déclarée comme une propriété synthétisée (conserver). me demandais 2 choses:
- comte Pourquoi ne ref va à 3 lors de l'utilisation du accesseur getter de l'origine du rectangle? Est-ce que je fais quelque chose de mal ?
- Avec un nombre de références de 3, je ne comprends pas comment cet extrait de code ne peut pas fuir. L'appel de release sur myRect le fera descendre à 2 depuis que j'appelle release sur l'origine dans dealloc(). Mais alors, quand la libération automatique prend-elle effet?
Merci!
Bonne information.Je ne connaissais pas le getter appelé retenir/autorelease. Merci beaucoup! – vdsf
Heureux de vous aider ... – bbum