2010-09-29 10 views
0

Quelqu'un peut-il expliquer pourquoi cette utilisation de mutableCopy fuit la mémoire?mutableCopy fuite de mémoire

- (id)objectInListAtIndex:(unsigned)theIndex { 
     NSSortDescriptor *descriptor = [[[NSSortDescriptor alloc] initWithKey:@"noteNumber" ascending:YES] autorelease]; 
     [list sortUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]]; 
     NSMutableArray *theArray = [list mutableCopy]; 
     NSDictionary *theDict = [theArray objectAtIndex:theIndex]; 
     return theDict; 
} 

Répondre

7

Parce que mutableCopy retourne un objet conservé, et vous ne diffusons jamais theArray.

Les méthodes de copie renvoient toujours un objet retenu que l'appelant est responsable de la libération. Ceci est également détaillé dans le API docs et le memory management guide.