我一直在使用下面的代碼,幾乎沒有任何問題,但今天Xcode開始抱怨它BIGTIME。在我發現錯誤/內存泄漏之前,我幾乎瘋了。 Xcode表示「消息發送到解除分配的實例」。我評論了幾行(發行版),並停止崩潰。iOS內存問題
事情是,我完全失去了這裏......我不應該釋放這些以避免內存泄漏?我爲這個項目定位iOS 4.0,所以手動記憶管理是必須的。
+ (NSString*)reformatRule:(NSString*) ruleStr {
NSString *bufRule = [[[NSString alloc] init] autorelease];
NSString *buf = [[NSString alloc] init];
char c = 0;
NSString *value = [[NSString alloc] init];
for(int i=0;i<[ruleStr length];i++){
c = [ruleStr characterAtIndex:i];
if([self isCharacterOrDigit:[NSString stringWithFormat:@"%c",c]]){
buf = [buf stringByAppendingString:[NSString stringWithFormat:@"%c",c]];
}else{
DLog(@"says:%@",buf);
value = [buf stringByReplacingOccurrencesOfString:@" " withString:@""];
//[buf release];
//buf = [[NSString alloc] init];
buf = @"";
if (![value isEqualToString:@""]) {
if ([value isEqualToString:CONDITION_AND] || [value isEqualToString:CONDITION_OR]) {
bufRule = [bufRule stringByAppendingString:[NSString stringWithFormat:@"%@",value]];
}else{
bufRule = [bufRule stringByAppendingString:[NSString stringWithFormat:@"(%@)",value]];
}
}
if(c!=' '){
bufRule = [bufRule stringByAppendingString:[NSString stringWithFormat:@"%c",c]];
}
}
}
// [value release]; COMMENTED THIS LINE
// [buf release]; AND THIS ONE TOO
return bufRule;
}
您是否嘗試過運行分析儀?還是其他工具? –
你爲什麼不使用ARC?如果他們只是使用ARC,我無法想象有多少人不在這裏。 –
@ RichardJ.RossIII - 你不認爲他們會繼續下一個問題嗎? ARC可能很可能成爲馬虎編碼實踐的「推動者」。 –