> On May 6, 2015, at 1:57 PM, Michael David Crawford <mdcrawf...@gmail.com> 
> wrote:
> I've had problems in the past where I failed to understand the Cocoa
> ownership conventions, I'm willing to grant that could be the case.
> 
> I know for sure that the analyzer enforces the naming conventions,
> that is, the exact same function names in C or C++ won't yield that
> same warnings as "alloc", "new" or "copy" would in Objective-C.
> 
> I'm reluctant to use ARC because in my honest opinion, ARC will get
> the leaks and most out of the crashes out of skanky code.  If you
> don't use ARC, you get them out by fixing the skank:
> 
>  "Dave, why do you add twelve extra bytes to all of Spellswell's allocations?"
> 
>  "That was so Spellswell would stop crashing."  Facepalm.
> 
> // LifeGrid.h
> @property (assign, nonatomic) GridCycler *cycler;
> 
> // Lifegrid.m - init
> self.cycler = [[GridCycler alloc] initWithGrid: self];  // Potential
> leak of an object
> if ( nil == self.cycler ) goto cycler_failed;
> 
> // dealloc
> [self.cycler release];
> 
> Expanding the "potential leak" message yields:
> 
> 1. assuming 'self' is not nil
> 
> 2. method returns Objective-C object with +1 retain count
> 
> 3. Object leaked: allocated object is not references later in this
> execution path and has a retain count of +1.
> 
> Isn't that what I want?  I should be taking ownership of it with
> "alloc/initWithGrid".
> 
> (initWithGrid doesn't do a cyclic retain.)

“cycler” is really a strong property (because you release its value in 
-dealloc), but you’ve declared it as assign, which means the synthesized setter 
won’t retain the new value or release the old value.  One way of looking at 
this is that the setter takes its argument at +1 and has a precondition that 
the property is currently set to nil.  Another way of looking at it is that the 
setter is buggy.

You should probably make the property readonly and just directly assign to the 
ivar in -init.

John.
_______________________________________________

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

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

Reply via email to