Приложение падает, когда я пытаюсь выпустить 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, и вернуть объект, автоматически освобожденный.

Другие вопросы по тегам