objective-c xcode ios4 casting nsdictionary

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"];