Iphone 使用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

我必须标记字符串并获取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;
基本上我得到了三个奇怪的内存泄漏,我不知道这三个是否相互关联

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.我在问题中提到的漏洞。
  • 下面的代码行还显示了仪器中的内存泄漏,我确实在IOS 3.12和IOS 4上运行了该代码,但我一直在收到这三个泄漏
  • [MyBtn.titleLabel setFont:[UIFont boldSystemFontOfSize:12];
    这段代码在我看来非常好——我看不到任何错误的分配,所以可能是警告不正确。可能需要分解代码以进一步定位警告,例如:

    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;