• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Zeroing out instance variables
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Zeroing out instance variables


  • Subject: Re: Zeroing out instance variables
  • From: Jean-Daniel Dupas <email@hidden>
  • Date: Sat, 17 Apr 2010 16:35:57 +0200

Le 17 avr. 2010 à 16:16, Ken Thomases a écrit :

> On Apr 17, 2010, at 8:53 AM, Paul Sanders wrote:
>
>> Something I've never been clear about though is
>> where an object's retain count is stored.  This obviously
>> requires an iVar somewhere (in addition to isA), so there might
>> be a trap for the unwary there [...]
>
> My understanding, which is vague and for which I have no references, is that it's handled in a manner similar to what was recently exposed via the associated references API (i.e. objc_setAssociatedObject and friends).
>
> That is, retain counts are stored outside of the instance.
>
> Having just looked up the source for CFRelease, I can't say my understanding has increased.  ;)  Although, there is confirmation there that the retain count is at least sometimes held externally.
>
> Would be an interesting subject for Mr. Bumgarner to expound upon on his blog.
>

AFAIK, CF objects store the retain count in an "ivar" (or a struct field to be exact) and  standard Obj-C objects ref count is stored in an external hash collection (CFBasicHash on 10.6).

You can see that by calling NSIncrementExtraRefCount() and stepping though the call using GCC.

That said, this is an implementation details.

IIRC, GnuStep used to store the retain count in 4 additional bytes allocated before each object.

uint32_t *rc = (uint8_t *)self - 4;


-- Jean-Daniel




_______________________________________________

Cocoa-dev mailing list (email@hidden)

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:

This email sent to email@hidden

  • Follow-Ups:
    • Re: Zeroing out instance variables
      • From: "Paul Sanders" <email@hidden>
    • Re: Zeroing out instance variables
      • From: Ken Thomases <email@hidden>
References: 
 >Zeroing out instance variables (From: Ben Haller <email@hidden>)
 >Re: Zeroing out instance variables (From: Graham Cox <email@hidden>)
 >Re: Zeroing out instance variables (From: Ben Haller <email@hidden>)
 >Re: Zeroing out instance variables (From: "Paul Sanders" <email@hidden>)
 >Re: Zeroing out instance variables (From: Ben Haller <email@hidden>)
 >Re: Zeroing out instance variables (From: "Paul Sanders" <email@hidden>)
 >Re: Zeroing out instance variables (From: Ken Thomases <email@hidden>)

  • Prev by Date: Re: Zeroing out instance variables
  • Next by Date: Re: Zeroing out instance variables
  • Previous by thread: Re: Zeroing out instance variables
  • Next by thread: Re: Zeroing out instance variables
  • Index(es):
    • Date
    • Thread