On 04/09/2009, at 12:21 AM, Horst Jäger wrote:
Any explanation?
Relying on retain counts to tell you an object's state is not a good
idea. What I'm guessing is that the code internally looks something
along the lines of:
- (void) release
{
if( retainCount == 1 )
[self dealloc];
else
--retainCount;
}
- (void) dealloc
{
mem_manager_put_on_free_list( self );
}
Nowhere is the retain count actually decremented to zero as it's just
a wasted operation. You hold a stale pointer to a freed object, so it
logs the stale retain count, which is 1. But sending it an actual
release is an error, as it's already been freed. No doubt this is one
of the many reasons why peeking at retain counts is widely discouraged.
--Graham
_______________________________________________
Cocoa-dev mailing list ([email protected])
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 [email protected]