On Jan 10, 2013, at 4:35 PM, Dave <d...@looktowindward.com> wrote:
> I've looked all over and just can't seem to find the recommended approach to 
> handling CF objects in properties when using ARC.
> 
> I have an init method that needs to create a CF object and store it as a 
> property for use while the object is alive. When the object is released I 
> want to release the CF Object,
> 
> Code:
> 
> -(id) init
> {
> // normal init code
> 
> 
> CFThingRef myCFThing = CFThingCreate();
> 
> self.propCFThing = myCFThing;
> }
> 
> 
> -(void) dealloc
> {
> CFRelease(self.propCFThing);
> self.propCFThing = NULL;
> }
> 
> This code gives analyzer warnings saying that a CF object has leaked.
> 
> What is the best way to stop the warnings?

This isn't really about ARC.  ARC doesn't currently manage objects of CF type.

If the property is really readonly except for initialization, the best pattern 
is to (1) mark the property readonly and (2) assign directly to the ivar in the 
-init method.  Don't forget to also (3) release the ivar in -dealloc.

If the property is not readonly, you need a custom setter that retains the new 
value and releases the old.  Calling that setter in -init with a +1 object 
really would be a leak, so you'd still either want to directly assign to the 
ivar there or balance out the +1 with a CFRelease.

John.
_______________________________________________

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