Re: 'Build and Analyze' with XCODE 3.2.2

2010-04-26 Thread David Duncan
On Apr 24, 2010, at 1:33 PM, Quincey Morris wrote:

 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.


FYI Create is for functions, new is for methods. The analyzer won't 
recognize one where the other is proper. There are also adornments you can use 
to override the analyzer's understanding, but I can't recall them right now.
--
David Duncan
Apple DTS Animation and Printing

___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: 'Build and Analyze' with XCODE 3.2.2

2010-04-26 Thread Kyle Sluder
On Mon, Apr 26, 2010 at 9:24 AM, David Duncan david.dun...@apple.com wrote:
 FYI Create is for functions, new is for methods. The analyzer won't 
 recognize one where the other is proper. There are also adornments you can 
 use to override the analyzer's understanding, but I can't recall them right 
 now.

They can be found here: http://clang-analyzer.llvm.org/annotations.html

I would advise sticking with the correct naming scheme, rather than
using the annotations to override their meaning. The annotations are
most useful when you have a delegate method that needs to return a
retained reference (-foo:newBar:). The analyzer won't pick up on new
anywhere but at the beginning of the method name.

--Kyle Sluder
___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


'Build and Analyze' with XCODE 3.2.2

2010-04-24 Thread John Love
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:

// 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 =:

NSDate *result = [gregorian dateByAddingComponents:offset toDate:fromDate 
options:0];

[offset release];

return result;

By the way, identical gotchas are picked up by B  A for gregorian.

John Love



John Love
Touch the Future! Teach!



___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: 'Build and Analyze' with XCODE 3.2.2

2010-04-24 Thread Nick Zitzmann

On Apr 24, 2010, at 2:02 PM, 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:
 
   // 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)
   }

I don't understand what you're trying to say. The static analyzer is telling 
you the truth, because you are leaking two objects in that code, unless that 
code will only be run with GC enabled.

Nick Zitzmann
http://www.chronosnet.com/

___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: 'Build and Analyze' with XCODE 3.2.2

2010-04-24 Thread Quincey Morris
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 (Cocoa-dev@lists.apple.com)

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: 'Build and Analyze' with XCODE 3.2.2

2010-04-24 Thread Scott Cherf
I believe the problem is that you aren't releasing offset or gregorian before 
you return them. I expect that gregorian retains offset (or copies it and 
retains the copy without releasing the original). 

In general, if you aren't don't intend to retain an allocated object, 
autorelease it and let the receiver retain it like this:

 NSDateComponents *offset = [[[NSDateComponents alloc] init] autorelease];

and 

 NSCalendar *gregorian = [[[NSCalendar alloc] 
 initWithCalendarIdentifier:NSGregorianCalendar] autorelease];

On Apr 24, 2010, at 1:02 PM, 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:
 
   // 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 =:
 
 NSDate *result = [gregorian dateByAddingComponents:offset toDate:fromDate 
 options:0];
 
 [offset release];
 
 return result;
 
 By the way, identical gotchas are picked up by B  A for gregorian.
 
 John Love
 
 
 
 John Love
 Touch the Future! Teach!
 
 
 
 ___
 
 Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
 
 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:
 http://lists.apple.com/mailman/options/cocoa-dev/cherf%40ambient-light.com
 
 This email sent to ch...@ambient-light.com



smime.p7s
Description: S/MIME cryptographic signature
___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com