我正在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