2009-04-30 6 views
31

Come un nuovo arrivato iPhone sviluppo e Objective-C, in generale, nelle ultime settimane ho incontrato numerose menzioni di 'ponti al numero verde' tra i quadri CF e NS.pedaggio

Un esempio particolare potrebbe essere CFStream e NSStream.

Esiste una risorsa che documenta tutti questi bridge e come utilizzarli? È semplice come lanciare da un oggetto di un tipo ad un altro?

chiedo come in questo momento sto utilizzando chiamate NSStream che non sono stricly consentito all'interno del iPhone SDK e capire che dovrei usare CFStream chiamate.

EDIT: Un articolo utile circa how TFB works

+2

V'è un ottimo post sul blog su questo argomento. Dai un'occhiata a http://ridiculousfish.com/blog/archives/2006/09/09/bridge/ Sono stato diffidente nei confronti di un ponte senza pedaggio fino a quando non l'ho capito meglio. – Mark

risposta

37

bridging toll free significa che le strutture di dati sono intercambiabili. È semplice quanto lanciare: questa è la parte "senza pedaggio". Ogni volta che puoi usare il tipo su un lato del ponte, puoi usare l'altro. Ad esempio, è possibile creare un CFString e quindi inviare messaggi NSString ad esso, oppure è possibile creare un NSArray e passare l'array alle funzioni CFArray.

Apple mantiene un list of the supported toll-free bridged types sul suo sito.

+1

collegamento aggiornato a [tipi di dati a ponte verdi] (http://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFDesignConcepts/Articles/tollFreeBridgedTypes.html#//apple_ref/doc/uid/20002401 -767858) – 0xced

+0

interessante. non elencano 'CFNullRef' e' NSNull' – user102008

+0

@ user102008: Sì, nessun indizio del perché sembrano così riluttanti a riconoscerli. Sono stati colmati dall'introduzione di CFNull AFAIK. – Chuck

4

Numero verde-ponte, anche se un nome buffo, è una caratteristica molto cool delle classi CoreFoundation. In sostanza si riduce al fatto che si può lanciare tra le classi CoreFoundation e NextStep con lo stesso nome (CFString < -> NSString, CFData < -> NSData, CFDictionary < -> NSDictionary ... solo per citarne alcuni tra i più comunemente utilizzati .)

| K <