J'ai lutté avec le meilleur modèle pour renvoyer un tableau d'une méthode statique.Retour d'un NSArray sans fuite?
Dans ma méthode statique getList (dans la classe BIUtility), j'alloue un NSArray à renvoyer. dans la ligne de retour, je fais:
return [array autorelease];
Puis, dans la méthode d'appel, je suis allouent un tableau comme celui-ci:
NSArray * list = [[[NSArray alloc] initWithArray:[BIUtility getList]] retain];
Plus tard, je libérer la liste à l'aide:
[list release];
Je pense que cela provoque une fuite de mémoire car la retenue augmente le nombre de retenue de trop. Cependant, si je ne fais pas la retenue, j'obtiens un Bad_Exec parce qu'il a déjà libéré la classe. Je sens que je suis en train de trop réfléchir et qu'il doit y avoir un modèle typique. J'ai regardé partout et je ne peux pas trouver une «meilleure pratique».
J'apprécie votre aide.
Je l'ai fait, mais je reçois le message d'EXC_Bad_Instruction parce qu'il tente de faire la libération sur un objet qui a déjà été publié. N'ai-je pas besoin de faire une version explicite sur l'objet retenu? –
@Michael: Comment déclarez-vous le tableau à l'origine? –
Comme ceci ... NSArray * moveList = [[NSArray alloc] init]; Parfois, je dois utiliser un NSMutableArray car je le compile à partir d'une requête SQL, mais je renvoie un tableau NS. –