Re: 'Build and Analyze' with XCODE 3.2.2
Re: 'Build and Analyze' with XCODE 3.2.2
- Subject: Re: 'Build and Analyze' with XCODE 3.2.2
- From: Quincey Morris <email@hidden>
- Date: Sat, 24 Apr 2010 13:33:50 -0700
On Apr 24, 2010, at 13:02, John Love wrote:
> Here's a sample snippet of my code:
>
> - (NSDate *)offsetDate:(NSDate *)fromDate
> byYears:(int)addYears
> byMonths:(int)addMonths
> byDays:(int)addDays {
>
> NSDateComponents *offset = [[NSDateComponents alloc] init];
> [offset setYear:addYears];
> [offset setMonth:addMonths];
> [offset setDay:addDays];
>
> NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
> return [gregorian dateByAddingComponents:offset toDate:fromDate options:0];
>
> }
>
>
> Builds and runs just dandy .. but "Build and Analyze" coughs up:
Not quite. You are leaking NSDateComponents objects (as the analyzer told you) so things are not quite "dandy".
> // method returns an object with a +1 retain count (owning reference)
> NSDateComponents *offset = [[NSDateComponents alloc] init];
>
> ... and at the end of the method:
>
> // object allocated and stored into 'offset' is no longer referenced after this point
> // and has a retain count of +1 (object leaked)
> }
>
> It appears that the analysis is saying I should retain offset immediately after it is set with *offset =:
I think you meant to say "release", not "retain".
> NSDate *result = [gregorian dateByAddingComponents:offset toDate:fromDate options:0];
>
> [offset release];
>
> return result;
Yes, or you can just autorelease offset when you create it.
Also, you should preferably follow the memory management rules about naming methods. Either autorelease gregorian before releasing it, or put "Create" somewhere in your method name.
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden