2010-01-11 5 views
2

Comment réparer la fuite ici?Je ne sais pas comment réparer la fuite

-(NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView { 
if(searching){  
    return nil; 
} 

NSMutableArray *tempArray = [[NSMutableArray alloc] init]; 
[tempArray addObject:UITableViewIndexSearch]; 
[tempArray addObject:@"A"]; 
[tempArray addObject:@"B"]; 
[tempArray addObject:@"C"]; 
[tempArray addObject:@"D"]; 
[tempArray addObject:@"E"]; 
[tempArray addObject:@"F"]; 
[tempArray addObject:@"G"]; 
[tempArray addObject:@"H"]; 
[tempArray addObject:@"I"]; 
[tempArray addObject:@"J"]; 
[tempArray addObject:@"K"]; 
[tempArray addObject:@"L"]; 
[tempArray addObject:@"M"]; 
[tempArray addObject:@"N"]; 
[tempArray addObject:@"O"]; 
[tempArray addObject:@"P"]; 
[tempArray addObject:@"Q"]; 
[tempArray addObject:@"R"]; 
[tempArray addObject:@"S"]; 
[tempArray addObject:@"T"]; 
[tempArray addObject:@"U"]; 
[tempArray addObject:@"V"]; 
[tempArray addObject:@"W"]; 
[tempArray addObject:@"X"]; 
[tempArray addObject:@"Y"]; 
[tempArray addObject:@"Z"]; 

return tempArray; 
} 

Toute aide serait appréciée.

Sam

Répondre

5

Vous devriez retournerez un objet autoreleased:

return [tempArray autorelease]; 
+0

acclamations, qui a fixé ce problème spécifique .. maintenant pour réparer les autres. * sigh * –

-4

Lorsque vous obtenez le TempArray, relâchez-le lorsque vous avez terminé en appelant

[#<your var># release]; 

pour résoudre votre fuite. Autorelease fonctionnera, mais vous devrez définir un pool NSAutoRelease et le vider une fois que vous avez terminé pour éviter une fuite de facto (car le seul pool d'autorelease est dans main() au début, donc le programme ne sera pas libéré tant que le programme quitte quand même).

+1

Le pool autorelease main() est drainé à chaque boucle d'exécution, et non à la fin du programme. – gcamp

+0

oui, la libération automatique est drainée sur la boucle d'exécution. (ou quand le programme en a besoin je crois) –

Questions connexes