Iphone 使用RGB方法的UICOLOR内存泄漏
我必须标记字符串并获取RGB值以生成UICOlor,下面是代码Iphone 使用RGB方法的UICOLOR内存泄漏,iphone,memory,memory-management,memory-leaks,uicolor,Iphone,Memory,Memory Management,Memory Leaks,Uicolor,我必须标记字符串并获取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 objectAtInde
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;
基本上我得到了三个奇怪的内存泄漏,我不知道这三个是否相互关联
1.当我将视图控制器推到导航控制器时,我出现泄漏,即
MyController *filter = [[MyController alloc] initWithNibName:@"MyController" bundle:nil];
[self.navigationController pushViewController:filter animated:YES];
[filter release] ;
MyController*filter=[[MyController alloc]initWithNibName:@“MyController”bundle:nil];
[self.navigationController pushViewController:过滤器动画:是];
[过滤器释放];
当我使用动画:否,即
MyController *filter = [[MyController alloc] initWithNibName:@"MyController" bundle:nil];
[self.navigationController pushViewController:filter animated:NO];
[filter release] ;
MyController*filter=[[MyController alloc]initWithNibName:@“MyController”bundle:nil];
[self.navigationController pushViewController:过滤器动画:否];
[过滤器释放];
2.我在问题中提到的漏洞。
这段代码在我看来非常好——我看不到任何错误的分配,所以可能是警告不正确。可能需要分解代码以进一步定位警告,例如:
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命名约定。我不知道这有多真实,也不知道这可能会导致您的问题,但这可能导致错误的泄漏警告的可能性非常小
编辑:根据您的其他信息,我不知所措。我觉得这三个片段都不错。您使用什么来检测这些泄漏——静态分析还是运行时?如果是后者,您是在模拟器上运行还是在设备上运行?是否提供了任何其他信息?请参阅已接受的答案
它实际上没有泄漏,很可能是误报 我也完全失去了这三个漏洞,现在我已经在仪器上测试了这些漏洞,我期待着在静态分析上测试这些漏洞。我正在运行的设备上测试所有这些泄漏。我想我应该向苹果公司的技术支持咨询这些泄密,因为所有这些泄密看起来都很奇怪。
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;