2011-03-31 4 views
0

J'ai eu une fuite de mémoire à la ligne tempstr = [tempstr substringToIndex ... Ive essayé toutes les combinaisons possibles d'allocation tempStr, NSString * tempStr = @ ""; NSString * tempStr = [[NSString alloc] init]; (avec une version à la fin de la boucle) ive essayé d'ajuster la portée de la NSString. RIEN. Sa production 3 fuites Toute aide sur ce que je peux essayer de le réparer serait très appréciée.substringToString produisant une fuite

while(x < [arr1 count]){ 
      //NSLog(@"%@", [arr1 objectAtIndex:x]); 

      if([[arr1 objectAtIndex:x] rangeOfString:@".com"].location != NSNotFound) 
      { 

       //NSLog(@"%@", [arr1 objectAtIndex:x]); 
       tempStr = [[arr1 objectAtIndex:x] substringFromIndex:[[arr1 objectAtIndex:x] rangeOfString:@"http://"].location]; 
       tempStr = [tempStr substringToIndex:tempStr.length - 1]; 
       [arr1 replaceObjectAtIndex:x withObject:tempStr]; 

       //NSLog(@"%@", [arr1 objectAtIndex:x]); 

      } 
..... more code.... 
x++ 
} 

Répondre

0

Ces tempStr instances devraient aller à la piscine autorelease, donc si vous utilisez la piscine autorelease correctement, ils devraient être libérés correctement, en temps voulu. Ainsi, soit vous mesurez la fuite très tôt (les objets ne seront pas libérés longtemps après la fin de la boucle), soit vous travaillez sur un thread où le pool autorelease n'a pas été configuré correctement.

+0

Je travaillais sous l'hypothèse que mon pool de autorelease n'est pas configuré correctement. Pour autant que je sache, cela devrait être fait automatiquement pour moi ... suis-je incorrect? – Riley

+0

'NSString * tempStr = [[arr1 objectAtIndex: x] substringFromIndex: [[arr1 objetAtIndex: x] plageOfString: @" http: // "] .location]; TempStr = [tempStr substringToIndex: tempStr.length - 1]; [arr1 replaceObjectAtIndex: x withObject: tempStr]; 'fuit également – Riley