Je vais avoir quelques problèmes avec le code ci-dessous:iPhone fuite de mémoire et un problème de libération tableau trié
NSSortDescriptor *idDescriptor = [[[NSSortDescriptor alloc] initWithKey:key ascending:ascending] autorelease];
NSArray *sortDescriptors = [NSArray arrayWithObject:idDescriptor];
NSArray *orderArray = [array sortedArrayUsingDescriptors:sortDescriptors];
NSMutableArray *result = [NSMutableArray arrayWithArray:orderArray];
Si j'utilise ce code, Instruments dit que j'ai une fuite de mémoire, pourquoi?
En utilisant ce code:
NSSortDescriptor *idDescriptor = [[[NSSortDescriptor alloc] initWithKey:key ascending:ascending] autorelease];
NSArray *sortDescriptors = [NSArray arrayWithObject:idDescriptor];
NSArray *orderArray = [array sortedArrayUsingDescriptors:sortDescriptors];
NSMutableArray *result = [[NSMutableArray alloc] initWithArray:orderArray];
Je reçois le trop avertissement de fuite, cependant, si j'AutoRelease le résultat de l'objet, une erreur de mémoire se produit.
Votre deuxième bloc de code alloue un NSMutableArray, vous devez lui envoyer un message de version ou il fuit. Lisez ceci et voyez si cela efface une certaine confusion (http://www.cocoadev.com/index.pl?AutoRelease) – conorgriffin
Comme je l'ai dit, si j'envoie un message de libération, je reçois un EXC_BAD_ACCESS. J'utilise ce code dans une fonction accessoire qui est appelée partout pour commander un tableau en utilisant une clé spécifique. – arielcamus
Donc, si j'utilise cette fonction: - (NSMutableArray *) orderArray: (NSMutableArray *) Tableau ByKey: (NSString *) clé croissant: (BOOL) croissant { \t NSSortDescriptor * idDescriptor = [[[NSSortDescriptor alloc] initWithKey : clé ascendante: ascendante] autorelease]; \t NSArray * sortDescriptors = [NSArray arrayWithObject: idDescriptor]; \t NSArray * orderArray = [array sortedArrayUsingDescriptors: sortDescripteurs]; NSMutableArray * result = [[[NSMutableArray alloc] initWithArray: orderArray] autorelease] \t \t \t \t retour résultat; } Est-ce que je dois conserver l'objet lorsqu'il est reçu dans un autre code? – arielcamus