我正在NSCFString下面的代码:的NSString stringByReplacingOccurrencesOfString泄漏
NSString *urlString;
/* leak showing below line */
urlString = [urlString stringByReplacingOccurrencesOfString:@"\n" withString:@""];
你如何解决此泄漏?
我正在NSCFString下面的代码:的NSString stringByReplacingOccurrencesOfString泄漏
NSString *urlString;
/* leak showing below line */
urlString = [urlString stringByReplacingOccurrencesOfString:@"\n" withString:@""];
你如何解决此泄漏?
很有可能您使用+alloc/initWith...
创建了urlString。如果是这种情况,那么您拥有urlString
参考号,并负责在某个时间发布它。但是,当您到达您粘贴问题的那一行时,由于stringByReplacingOccurrencesOfString:withString:
返回一个新的字符串对象(即,它不会修改字符串),因此您将用新的字符串引用覆盖urlString
引用。
我的建议是使用NSMutableString
来代替,它允许就地进行字符串操作。
你应该做字符串的指针分配而不是静态分配。变化:
NSString urlString;
到:
NSString *urlString;
也有似乎是启动urlString
到某一值时一些其他的代码到你正在做替换操作。
LOL我不敢相信我没有看到......哎呀! :) – 2010-06-26 06:11:52
编译器不会让这个编译无论如何。它不可能是泄漏的源头(至少,不是没有大量的构建设置)。 – bbum 2010-06-26 06:20:20
它从一个我的代码的是做所有你想要的,我换成白色的空间,但可以更换空字符串(@“”)
NSString * str_aLine;
str_aLine = @"sometext \n and \t and on";
// replace tabs to space
str_aLine = [str_aLine stringByReplacingOccurrencesOfString:@"\t" withString:@" "];
// replace \n to space
str_aLine = [str_aLine stringByReplacingOccurrencesOfString:@"\n" withString:@" "];
// replace \r to space
str_aLine = [str_aLine stringByReplacingOccurrencesOfString:@"\r" withString:@" "];
// reduce spaces to one space
str_aLine = [str_aLine stringByReplacingOccurrencesOfString:@" +" withString:@" " options:NSRegularExpressionSearch range:NSMakeRange(0, str_aLine.length)];
// trim begin and end from white spaces
str_aLine = [str_aLine stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
你在哪里摆在首位获得urlString?你需要释放它吗? – yehnan 2010-06-26 06:06:43