2009-04-30 18 views
31

Como recién llegado al desarrollo de iPhone y Objective-C en general, en las últimas semanas me he encontrado con numerosas menciones de "puentes gratuitos" entre los marcos CF y NS.Puertos gratuitos

Un ejemplo particular sería CFStream y NSStream.

¿Existe un recurso que documente todos estos puentes y cómo usarlos? ¿Es tan simple como lanzar desde un objeto de un tipo a otro?

Pregunto, por el momento, estoy usando llamadas de NSStream que no están estrictamente permitidas dentro del iPhone SDK y entiendo que debería estar usando llamadas de CFStream.

EDIT: Un artículo útil sobre how TFB works

+2

Hay una excelente entrada de blog sobre este tema. Eche un vistazo a http://ridiculousfish.com/blog/archives/2006/09/09/bridge/. Estaba receloso de la creación de puentes sin cargo hasta que lo entendí mejor. – Mark

Respuesta

37

puente libre de Toll significa que las estructuras de datos son intercambiables. Es tan simple como el casting: esa es la parte "sin cargo". En cualquier lugar que pueda usar el tipo en un lado del puente, puede usar el otro. Entonces, por ejemplo, puede crear un CFString y luego enviarle mensajes NSString, o puede crear un NSArray y pasar el arreglo a las funciones CFArray.

Apple mantiene un list of the supported toll-free bridged types en su sitio.

+1

Enlace actualizado a [tipos de datos de puente sin cargo] (http://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFDesignConcepts/Articles/tollFreeBridgedTypes.html#//apple_ref/doc/uid/20002401 -767858) – 0xced

+0

interesante. no enumeran 'CFNullRef' y' NSNull' – user102008

+0

@ user102008: Sí, no hay idea de por qué parecen ser tan reacios a reconocer esos dos. Han sido puenteados desde la presentación de CFNull AFAIK. – Chuck

4

Sin costo, la creación de puentes, aunque es un nombre divertido, es una característica muy buena de las clases de CoreFoundation. Básicamente, se reduce al hecho de que se puede convertir entre CoreFoundation y clases NextStep del mismo nombre (CFString < -> NSString, CFData < -> NSData, CFDictionary < -> NSDictionary ... solo para nombrar algunos de los más utilizados .)

| K <

Cuestiones relacionadas