我必须对字符串进行标记并获取RGB值以制作UICOlor,下面是代码,
NSString* text = @"1.0,1.0,1.0";
NSArray *chunks = [text componentsSeparatedByString:@","];
return [UIColor colorWithRed:([[chunks objectAtIndex:0] floatValue]/256.0)
green:([[chunks objectAtIndex:1] floatValue]/256.0)
blue:([[chunks objectAtIndex:2] floatValue]/256.0)
alpha:1];
它向我显示返回UIColor对象的行的内存泄漏,希望有人会指出我在代码中所犯的错误。
我打破了代码,但它仍然在我初始化UIColor对象的行显示泄漏。
功能原型是,
+(UIColor*) GetUIColorFromText:(NSString*)text;
基本上我得到三个奇怪的内存泄漏,我不知道这三个是否相互关联。
MyController *filter = [[MyController alloc] initWithNibName:@"MyController" bundle:nil]; [self.navigationController pushViewController:filter animated:YES]; [filter release] ;当我使用动画时,这个泄漏被删除了:NO,即
MyController *filter = [[MyController alloc] initWithNibName:@"MyController" bundle:nil]; [self.navigationController pushViewController:filter animated:NO]; [filter release] ;2.我在问题中提到的泄漏。
[MyBtn.titleLabel setFont:[UIFont boldSystemFontOfSize:12]];
答案 0 :(得分:1)
查看iphone - UIColor leaking... need to release the object?
的已接受答案它实际上并没有泄漏,很可能是误报。
答案 1 :(得分:0)
这段代码看起来非常好 - 我看不到任何杂散分配,因此警告可能不正确。可能值得分解代码以进一步本地化警告,例如:
NSString* text = @"1.0,1.0,1.0";
NSArray *chunks = [text componentsSeparatedByString:@","];
NSString *redStr = [chunks objectAtIndex:0];
float red = [redStr floatValue]/256.0;
NSString *greenStr = [chunks objectAtIndex:1];
float green = [greenStr floatValue]/256.0;
NSString* blueStr = [chunksObjectAtIndex:2];
float blue = [blueStr floatValue]/256.0;
UIColor* rgb = [UIColor colorWithRed:red green:green blue:blue alpha:1.0];
return rgb;
这至少应该确定报告问题的确切位置。但是,我几乎可以肯定这段代码中没有实际的泄漏。
其他一些想法:
这是代码的全部范围吗?据推测,从长远来看,你没有使用硬编码的@"1.0,1.0,1.0"
,附近还有其他可能导致问题的东西吗?
方法名称是什么?我在这里读到静态分析器在试图弄清楚语义是什么时会考虑NARC命名约定。我不知道这是多么真实,也不知道它会如何导致你的问题,但是这可能会导致错误的泄漏警告。
编辑:根据您的其他信息,我很茫然。所有这三个片段看起来都不错。你用什么来检测这些泄漏 - 静态分析还是运行时?如果是后者,你在模拟器或设备上运行吗?是否提供了其他信息?