Re: ARC conversion help - CFErrorRef* and NSError**
Re: ARC conversion help - CFErrorRef* and NSError**
- Subject: Re: ARC conversion help - CFErrorRef* and NSError**
- From: John McCall <email@hidden>
- Date: Mon, 29 Oct 2012 12:56:03 -0700
On Oct 29, 2012, at 11:15 AM, Alex Kac wrote:
> ARC conversion is something we're having some issues with, but I won't bore you with the details. I'm trying to convert parts of our project to ARC and so of course there is a learning curve. Primarily between CF code and Cocoa. This one I'm stumped on as I'm just starting the CF/Cocoa _bridging part of my conversion.
>
> + (BOOL) addGroup: (ABGroup *) aGroup withError: (NSError **) error
> {
> CFErrorRef* cfError = error;
>
> ABAddressBookRef addressBook = CFAutorelease(WebISSafe_ABAddressBookCreateWithOptions(NULL,NULL));
> if (!ABAddressBookAddRecord(addressBook, aGroup.record, cfError)) return NO;
> return ABAddressBookSave(addressBook, cfError);
> }
>
> I'm confused on how to properly bridge the CFErrorRef* and NSError**. I've tried a variety of things, but all give an error. I learn more by example than by definition so the reference docs don't always clarify things for me.
You can use a temporary, as Ken suggests. Alternatively, in this case it's safe to use the NSError** directly as a CFErrorRef*, and while ARC can't reasonably know that and so prevents the cast, you can bypass that restriction by casting through void*:
CFErrorRef* cfError = (CFErrorRef*) (void*) error;
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