That's exactly what Jerry just suggested was happening, however the 
documentation implies that it's implemented more like 

-(oneway void)release
{
        self->retainCount--;
        if (0 == self->retainCount)
                [self dealloc];
}

But it doesn't really matter since you should never be calling dealloc except 
from release or dealloc (as [super dealloc];) anyway.

-Daniel

On Aug 23, 2010, at 6:47 PM, Gary L. Wade wrote:

> Have you considered that the code for -release may be implemented in a
> manner like this?
> 
> -(oneway void)release
> {
>    if (1 == self->retainCount)
>    {
>        // Let's save a few CPU cycles and not bother
>        // decrementing retainCount since it won't be
>        // around for long.
>        [self dealloc];
>    }
>    else
>    {
>        self->retainCount--;
>    }
> }
> 
> On 08/23/2010 6:35 PM, "Jerry Krinock" <je...@ieee.org> wrote:
> 
>> Kind of late in the decade for this, but anyhow, the documentation for
>> -release says:
>> 
>> - (oneway void)release
>>   Decrements the receiver’s reference count.
>>   Discussion.  The receiver is sent a dealloc message when its reference
>> count reaches 0.
>> 
>> So it's always bothered me that if I override -dealloc and log the 
>> retainCount
>> on the way in, it is 1, not 0.
>> 
>> Upon doing some experiments, I believe that the first sentence in that
>> documentation is wrong.  It should say this instead:
>> 
>>   If the receiver's retainCount is greater than 1, decrements it.  Otherwise,
>> invokes -dealloc.
>> 
>> Reading the document Memory Management Programming Guide ▸ Object Ownership
>> and Disposal, one gets a similar false impression, although this document is
>> vague enough that it is only misleading, not wrong.
>> 
>> OK, someone tell me why I'm wrong about this
>> :)
> 
> 

_______________________________________________

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

Reply via email to