views:

167

answers:

2

Hi,

I have to token the string and get a RGB values to make a UICOlor, below is the code,

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];

It shows me a memory leak at the line returning the UIColor object, hopefully someone will point out the mistake I am doing in the code.

A: 

This code looks perfectly fine to me -- I can't see any stray allocations, so it's possible that the warning is incorrect. It might be worth breaking up the code to localise the warning further, eg:

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;

This should at least identify exactly where the reported problem is. However, I'm almost certain there is no actual leak in this code.

A couple of other thoughts:

Is this the full extent of the code? Presumably you're not using a hardcoded @"1.0,1.0,1.0" in the long run, so is there something else in the vicinity that may be causing the problem?

What's the method name? I've read hereabouts that the static analyser takes into account the NARC naming convention when trying to work out what the semantics are meant to be. I've no idea how true that is, nor how it might cause your problem here, but there's a very remote chance that this might be contributing to an erroneous leak warning.

EDIT: based on your additional info, I'm at a loss. All three of those snippets look OK to me. What are you using to detect these leaks -- static analysis or runtime? If the latter, are you running on the simulator or the device? Is any other information provided?

walkytalky
I am also totally loss in these three leaks, right now i have test these leaks on instruments and i am looking forward to test these leaks on static analysis. I am running on device to test all these leaks.I think I should have to ask apple technical support for these leaks as all these leaks look weird.
Mohammad Salman
A: 

I break the code but it is still showing me a leak at a line where i initialize UIColor object.

The prototype of function is ,

+(UIColor*) GetUIColorFromText:(NSString*)text;

Basically I am getting three weird memory leaks, I don't know whether these three are interrelated or not.

    1. I am getting a leak when i push my view controller to navigation controller, i.e
    MyController *filter = [[MyController alloc] initWithNibName:@"MyController" bundle:nil];
                [self.navigationController pushViewController:filter animated:YES];
                [filter release] ;
    
    this leak get removed when I used animated:NO , i.e
    MyController *filter = [[MyController alloc] initWithNibName:@"MyController" bundle:nil];
                [self.navigationController pushViewController:filter animated:NO];
                [filter release] ;
    2. Leak which i mention in my question.
  1. Below line of code also show me a memory leak in instrument, I do run the code on IOS 3.12 and as well as 4 but i am getting these three leaks all the time,
[MyBtn.titleLabel setFont:[UIFont boldSystemFontOfSize:12]];
Mohammad Salman
You should edit this information into your question rather than posting as an answer. Other considerations aside, the fact that multiple answers show in the index may deter other people from reading the question.
walkytalky