• 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: Core Foundation Objects and Properties when using ARC
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Core Foundation Objects and Properties when using ARC


  • Subject: Re: Core Foundation Objects and Properties when using ARC
  • From: John McCall <email@hidden>
  • Date: Fri, 11 Jan 2013 10:03:33 -0800

On Jan 10, 2013, at 4:35 PM, Dave <email@hidden> 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 (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

References: 
 >Re: Cococa-Dev : was [coredata count not fulfill fault after object delete] (From: Martin Hewitson <email@hidden>)
 >Re: Cococa-Dev : was [coredata count not fulfill fault after object delete] (From: Mike Abdullah <email@hidden>)
 >Re: Cococa-Dev : was [coredata count not fulfill fault after object delete] (From: Martin Hewitson <email@hidden>)
 >Re: Cococa-Dev : was [coredata count not fulfill fault after object delete] (From: Mike Abdullah <email@hidden>)
 >Re: Cococa-Dev : was [coredata count not fulfill fault after object delete] (From: Martin Hewitson <email@hidden>)
 >Re: Cococa-Dev : was [coredata count not fulfill fault after object delete] (From: Martin Hewitson <email@hidden>)
 >Re: Cococa-Dev : was [coredata count not fulfill fault after object delete] (From: Peter <email@hidden>)
 >Re: Cococa-Dev : was [coredata count not fulfill fault after object delete] (From: Martin Hewitson <email@hidden>)
 >Re: Cococa-Dev : was [coredata count not fulfill fault after object delete] (From: Peter <email@hidden>)
 >Core Foundation Objects and Properties when using ARC (From: Dave <email@hidden>)

  • Prev by Date: Re: Service with NSURLConnection
  • Next by Date: Re: Service with NSURLConnection
  • Previous by thread: Core Foundation Objects and Properties when using ARC
  • Next by thread: Re: Cococa-Dev : was [coredata count not fulfill fault after object delete]
  • Index(es):
    • Date
    • Thread