I have the code (stripped down):
CFDictionaryRef *currentListingRef;
//declare currentListingRef here
NSDictionary *currentListing;
currentListing = (NSDictionary *) currentListingRef;
And then I get the error:
Cast of a non-Objective-C pointer type 'CFDictionaryRef *' (aka 'const struct __CFDictionary **') to 'NSDictionary *' is disallowed with ARC
What am I doing wrong? How do I convert from a CFDictionaryRef
to an NSDictionary
?
ARC changed the way bridging works.
NSDictionary *original = [NSDictionary dictionaryWithObject:@"World" forKey:@"Hello"]; CFDictionaryRef dict = (__bridge CFDictionaryRef)original; NSDictionary *andBack = (__bridge NSDictionary*)dict; NSLog(@"%@", andBack);
In ARC, this should be done this way:
CFDictionaryRef currentListingRef = ...;
NSDictionary *currentListing = CFBridgingRelease(currentListingRef);
This releases the CF object and transfers ownership of the object to ARC otherwise you should release CF object manually.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With