Je suis une fuite de mémoire sur ce point:De retour des objets avec autorelease mais je fuir encore la mémoire
ma classe personnalisée:
+ (id)vectorWithX:(float)dimx Y:(float)dimy{
return [[[Vector alloc] initVectorWithX:dimx Y:dimy] autorelease]; }
- (Vector*)add:(Vector*)q {
return [[[Vector vectorWithX:x+q.x Y:y+q.y] retain] autorelease]; }
déléguer app je le lancer:
Vector *v1 = [[Vector alloc] initVector];
Vector *v2 = [[Vector alloc] initVector];
Vector *vtotal = [[v1 add:v2] retain];
[v1 release];
[v2 release];
[vtotal release];
Comment cette des fuites? Je les libère ou les autoelease correctement. L'application se bloque immédiatement si je ne les conserve pas, à cause d'une libération anticipée je suppose. Il se bloque également si j'ajoute une autre version.
Vous n Il ne faut pas conserver/autoelease le nouveau vecteur dans add, il suffit de retourner le résultat de [Vector vectorWithX: Y:]. Pouvez-vous poster le code pour initVector et tel? –
merci beaucoup pour la réponse, j'ai déjà supprimé retenir/autorelease d'ajouter, mais fuit toujours. le vecteur init est ceci: (x et y sont synthétisés) - (id) initVector {self = [super init]; si (auto-) {x = 0; y = 0; } retournez-vous; } – gok