NSString y CFStringRef son "sin conexión de puente", lo que significa que simplemente puede encasillar entre ellos.
Por ejemplo:
CFStringRef aCFString = (CFStringRef)aNSString;
funciona perfectamente y de forma transparente. Del mismo modo:
NSString *aNSString = (NSString *)aCFString;
La sintaxis anterior era para MRC. Si está utilizando ARC, la nueva sintaxis de conversión es la siguiente:
NSString *aNSString = (__bridge NSString *)aCFString;
funciona también. La cuestión clave a tener en cuenta es que CoreFoundation a menudo devolverá objetos con recuentos de referencia de +1, lo que significa que deben ser liberados (todas las funciones de formato de creación de CF [Type] lo hacen).
Lo bueno es que en Cocoa puede usar de forma segura la liberación automática o liberación para liberarlos.
Si está utilizando ARC, la nueva sintaxis de fundición para este caso está ahora NSString * aNSString = (__bridge NSString *) aCFString – MikeG
Gracias MikeG, que tenía que hacer similar para la conversión inversa: NSString * str = @ "a B C"; CFStringRef cstrref = (__ bridge CFStringRef) str; – KomodoDave
@NilObject actualice su respuesta para incluir ARC para que los buscadores no tengan que verificar los comentarios. Gracias. –