我一直在使用下面的代码,几乎没有任何问题,但今天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可能很可能成为马虎编码实践的“推动者”。 –