2011-07-18 2 views
0

réactiver les NSMutableString comme ci-dessous:application se bloque lorsque je tente de libérer NSMutableString s'il vous plaît aider à ce

-(NSString*)filterIt:(NSString*)source 
{ 
    temp1= [[NSString alloc] initWithString:[source stringByReplacingOccurrencesOfString:@"rlm;" withString:@""]]; 
    //NSString *m_temp; 
    temp1 = [temp1 stringByReplacingOccurrencesOfString:@"&" withString:@""]; 
    temp1 = [temp1 stringByReplacingOccurrencesOfString:@"#x" withString:@"&#x"]; 
    NSRange range = [temp1 rangeOfString:@"&#x"]; 
    NSRange range1 = NSMakeRange(range.location, 8); 
    if (range1.location != NSNotFound) { 
     NSString* temp2 = [temp1 stringByReplacingCharactersInRange:range1 withString:@""]; 
     //[temp1 setString:temp2]; 
     temp1 = temp2; 
     range = [temp1 rangeOfString:@"&#x"]; 
     while (range.location < [temp1 length]) { 
      range1 = NSMakeRange(range.location, 8); 
      temp2 = [temp1 stringByReplacingCharactersInRange:range1 withString:@""]; 
      //[temp1 setString:temp2]; 
      temp1 = temp2; 
      range = [temp1 rangeOfString:@"&#x"]; 
     } 
    } 
    //m_temp = [temp1 mutableCopy]; 
// [temp1 release]; 
    return temp1; 
} 

si je tente de libérer cette chaîne dans la méthode dealloc et essayez d'exécuter l'application mon application se bloque.

s'il vous plaît me donner quelques suggestions comment puis-je libérer ce temp1

Merci à l'avance

+0

Veuillez poster le message d'erreur. – PengOne

+0

à où essayez-vous de le libérer? dans la même fonction? ou à l'extérieur de la fonction? – Maulik

+0

Etes-vous quelque part en train d'écraser 'temp1'? En bref, comme vous pouvez le voir par les commentaires: vous devez fournir * way * plus d'informations et de contexte. – DarkDust

Répondre

1

vous pouvez retourner votre chaîne Mutable que la libération automatique

OU

se réfèrent this...

+0

Merci pour votre réponse maulik .... si j'essaye de libérer mon application est s'écraser –

+0

retirer le code de la méthode dealloc .. alors essayez – Maulik

+0

oui..tried comme ça seulement ... ne fonctionne pas ... im essayant de poster mon code, mais ne pas accepter dans cette boîte de texte –

0

Je suppose que vous faites cet appel à l'intérieur d'une méthode. Basé sur le code que vous avez fourni, assurez-vous que le fragment de code est en fait:

temp1= [[NSMutableString alloc] initWithString:[source stringByReplacingOccurrencesOfString:@"rlm;" withString:@""]];

Je suppose que vous appelez stringByReplacingOcurrenceOfString: withString: aux sources. Cela dit, vous prétendez que le programme se bloque en atteignant 'dealloc' .. cela voudrait dire que temp1 est déclarée comme une variable d'instance dans votre code ... Si c'est le cas, le code correct devrait être (en supposant temp1 est une propriété déclarée avec retenue ensemble d'attributs):

self.temp1 = [[NSMutableString alloc] initWithString:[source stringByReplacingOccurrencesOfString:@"rlm;" withString:@""]];

Si temp1 n'est pas une variable d'instance ni une propriété, vous voudrez peut-être indiquer dans la méthode que temp1 est un NSMutableString et retourner l'objet autoreleased .

+0

Vous venez d'ajouter plus de code. essayez de l'afficher mieux. C'est illisible. –

+0

Il semble que temp1 est une variable d'instance. Est-ce une propriété avec l'attribut retain, aussi? –

Questions connexes