objective c - ¿Lanzar un CFDictionaryRef a NSDictionary?
objective-c xcode (3)
Tengo el código (despojado):
CFDictionaryRef *currentListingRef;
//declare currentListingRef here
NSDictionary *currentListing;
currentListing = (NSDictionary *) currentListingRef;
Y luego me sale el error:
El lanzamiento de ARCictionaryRef * (alias ''const struct __CFDictionary **'') a ''NSDictionary *'' no se permite con ARC
¿Qué estoy haciendo mal? ¿Cómo convierto de CFDictionaryRef
a NSDictionary
?
ARC cambió la forma en que funciona el puente.
NSDictionary *original = [NSDictionary dictionaryWithObject:@"World" forKey:@"Hello"];
CFDictionaryRef dict = (__bridge CFDictionaryRef)original;
NSDictionary *andBack = (__bridge NSDictionary*)dict;
NSLog(@"%@", andBack);
En ARC, esto debería hacerse de esta manera:
CFDictionaryRef currentListingRef = ...;
NSDictionary *currentListing = CFBridgingRelease(currentListingRef);
Esto libera el objeto CF y transfiere la propiedad del objeto a ARC; de lo contrario, debe liberar el objeto CF manualmente.
Prueba este código,
NSDictionary *ssidList = (__bridge NSDictionary*)myDict;
NSString *SSID = [ssidList valueForKey:@"SSID"];