If the property is set to "retain", then the line

self.cycler = [[[….initWithGrid:self] autorelease]

will cause the setter to retain the passed in object, so after this line, 
_cycler will have a (heuristic) retain count of 2 (an alloc and a retain).

After this, when the autorelease pool is drained, reducing the (heuristic) 
retain count by 1: you've still got a hold of it in the property.

Then in dealloc, you release the object in dealloc to reduce the (heuristic) 
retain count to 0.

To release the object, you can use

[_cycler release];

or

self.cycler = nil;

or you may be able to not even bother if you won't create a cycle, I haven't 
done manual memory in a while, but I think retained properties are released at 
destruction automatically.

Aaron

> On May 6, 2015, at 2:30 PM, Michael David Crawford <mdcrawf...@gmail.com> 
> wrote:
> 
> Am I correct that autoreleased objects are released after each round
> of even processing?
> 
> In this case my cycler needs to hang around for the life of the whole program.
> 
> Thanks,
> 
> Mike
> Michael David Crawford, Consulting Software Engineer
> mdcrawf...@gmail.com
> http://www.warplife.com/mdc/
> 
>   Available for Software Development in the Portland, Oregon Metropolitan
> Area.
> 
> 
> On Wed, May 6, 2015 at 2:25 PM, Aaron Montgomery
> <eey...@monsterworks.com> wrote:
>> Having cycler set to "assign" and then releasing it in dealloc doesn't feel 
>> right. Why not set cycler to "retain", add an autorelease in init then 
>> release _cycler in dealloc?
>> 
>> Aaron
>> 
>> 
>>> 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.)
>>> 
>>> Thanks,
>>> 
>>> Mike
>>> 
>>> Michael David Crawford, Consulting Software Engineer
>>> mdcrawf...@gmail.com
>>> http://www.warplife.com/mdc/
>>> 
>>>  Available for Software Development in the Portland, Oregon Metropolitan
>>> Area.
>>> _______________________________________________
>>> 
>>> 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/eeyore%40monsterworks.com
>>> 
>>> This email sent to eey...@monsterworks.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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

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

Reply via email to