初始化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
提前致谢
答案 0 :(得分:0)
答案 1 :(得分:0)
我假设您正在一个方法中进行此调用。根据您提供的代码,确保代码片段实际上是:
temp1= [[NSMutableString alloc]
initWithString:[source stringByReplacingOccurrencesOfString:@"rlm;" withString:@""]];
我假设您正在调用stringByReplacingOcurrenceOfString:withString:to sources。
话虽如此,你声称程序在达到'dealloc'时崩溃了......这意味着temp1在你的代码中被声明为一个实例变量......如果是这样的话,那么正确的代码应该是(假设temp1是一个声明的属性,其中包含retain属性:
self.temp1 = [[NSMutableString alloc]
initWithString:[source stringByReplacingOccurrencesOfString:@"rlm;" withString:@""]];
如果temp1不是实例变量也不是属性,您可能希望在方法内部指示temp1是NSMutableString并返回自动释放的对象。