Приложение падает, когда я пытаюсь выпустить nsmutablestring, пожалуйста, помогите на этом
intialised NSMutableString
как показано ниже:
-(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;
}
если я пытаюсь освободить эту строку в методе dealloc и пытаюсь запустить приложение, мое приложение падает.
пожалуйста, дайте мне несколько советов, как я могу выпустить этот temp1
заранее спасибо
2 ответа
Я предполагаю, что вы делаете этот вызов внутри метода. На основе предоставленного вами кода убедитесь, что фрагмент кода действительно:
temp1= [[NSMutableString alloc]
initWithString:[source stringByReplacingOccurrencesOfString:@"rlm;" withString:@""]];
Я предполагаю, что вы вызываете stringByReplacingOcurrenceOfString:withString: для источников.
Сказав это, вы утверждаете, что программа падает при достижении 'dealloc'.. это будет означать, что temp1 объявлен как переменная экземпляра в вашем коде... Если это так, правильный код должен быть (при условии, что temp1 является объявленное свойство с установленным атрибутом retain):
self.temp1 = [[NSMutableString alloc]
initWithString:[source stringByReplacingOccurrencesOfString:@"rlm;" withString:@""]];
Если temp1 не является ни переменной экземпляра, ни свойством, вы можете указать внутри метода, что temp1 является NSMutableString, и вернуть объект, автоматически освобожденный.