Re: Retain/Release and Properties clarification
Re: Retain/Release and Properties clarification
- Subject: Re: Retain/Release and Properties clarification
- From: Bayes Scott F <email@hidden>
- Date: Wed, 12 Oct 2011 12:17:39 -0700
Thanks, Greg.
ScottB
On Oct 12, 2011, at 12:12 , Greg Parker wrote:
> On Oct 12, 2011, at 9:21 AM, Bayes Scott F wrote:
>> Someone on Matt's site mentioned the possibility that the synthesized ivar could be implemented indirectly, say as a member of a collection. Since the implementation's opaque, we don't know if that ever can happen.
>
> A property may be implemented using storage that is not an ivar. NSManagedObject uses this.
>
> A *synthesized* property will always use an ivar. That's part of the definition of @synthesize.
>
>
>> So, is self->mySynthIvar safe (both lvalue and rvalue), or should we be messaging?
>
> If it's your property, then you're free to access the ivar yourself. Of course, direct ivar access may bypass any atomicity or memory management behavior that the getter and setter methods enforce.
>
>
>> And does the compiler ever shortcut something like self.mySynthSimpleIntVar to self->mySynthSimpleIntVar, or does it always use the setter/getter?
>
> Never. Omitting the method call would be an incorrect optimization, because (for example) KVO might override the method to perform KVO change notifications. To make that optimization safely, you would need something like runtime recompilation that could undo the optimization at runtime if necessary.
>
>
> --
> Greg Parker email@hidden Runtime Wrangler
>
>
_______________________________________________
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