J'utilise cette fonction pour extraire une sous-chaîne, cela fonctionne, mais il y a deux fuites:mémoire SubstringToIndex fuite
-(NSString*)EstraiP:(NSString*)str ini:(NSString*)ini fin:(NSString*)fin occ:(int)occ{
NSRange rstr1;
for(int i=0; i < occ; i++){
rstr1=[str rangeOfString:fin];
str=[str substringFromIndex:rstr1.location+rstr1.length];
}
NSString* FinalStr;
rstr1=[str rangeOfString:ini];
if(occ==0){
if(rstr1.length==0)
return @"Non Trovato inizio";
FinalStr=[str substringFromIndex:(rstr1.location + rstr1.length)] ;
}else{
if(rstr1.length==0)
return @"Non Trovato inizio";
FinalStr=[str substringFromIndex:rstr1.location+rstr1.length] ;
}
NSRange rstr2=[FinalStr rangeOfString:fin];
if(rstr2.length==0)
return @"Non Trovata fine";
FinalStr=[FinalStr substringToIndex:rstr2.location];
return FinalStr;
}
Cette fuite vers les lignes de la mémoire:
str=[str substringFromIndex:rstr1.location+rstr1.length];
FinalStr=[FinalStr substringToIndex:rstr2.location];
i regardé autour mais Je n'ai rien trouvé .... Il n'y a pas d'allocation ou de retenue, donc je ne devrais pas les libérer ... quel peut être le problème? J'espère que je me suis expliqué
Merci!
Qu'est-ce qui vous a dit qu'il y avait des fuites ici? –
Si vous voulez vous assurer qu'une sous-chaîne n'existe pas, utilisez 'rstr1.location == NSNotFound'. – kennytm