2009-04-30 3 views
31

Als Neuling in der iPhone-Entwicklung und Objective-C im Allgemeinen bin ich in den letzten Wochen auf zahlreiche Erwähnungen von "Toll free bridges" zwischen CF- und NS-Frameworks gestoßen.Gebührenfreie Brücken

Ein besonderes Beispiel würde CFStream und NSStream sein.

Ist eine Ressource existiert all diese Brücken zu dokumentieren und wie sie verwendet werden? Ist es genauso einfach wie ein Objekt von einem Typ auf einen anderen zu übertragen?

Ich frage, wie im Moment verwende ich NStream Anrufe, die innerhalb des iPhone SDK nicht streng erlaubt sind und verstehen, dass ich CFStream Anrufe verwenden sollte.

EDIT: Ein nützlicher Artikel über how TFB works

+2

Es zu diesem Thema eine ausgezeichnete Blog-Post ist. Check out http://ridiculousfish.com/blog/archives/2006/09/09/bridge/ Ich war misstrauisch von gebührenfreien Bridging, bis ich es besser verstand. – Mark

Antwort

37

Gebührenfreie Überbrückungs bedeutet, dass die Datenstrukturen untereinander austauschbar sind. Es ist genauso einfach wie Gießen - das ist der "gebührenfreie" Teil. Wo immer Sie den Typ auf einer Seite der Brücke verwenden können, können Sie den anderen verwenden. So zum Beispiel können Sie eine CFString erstellen und dann NSString Nachrichten an sie senden, oder Sie können eine NSArray erstellen und das Array CFArray Funktionen übergeben.

Apple hält eine list of the supported toll-free bridged types auf seiner Website.

+1

Aktualisierter Link zu [gebührenfreien Bridged-Datentypen] (http://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFDesignConcepts/Articles/tollFreeBridgedTypes.html#//apple_ref/doc/uid/20002401 -767858) – 0xced

+0

interessant. sie nicht Liste 'CFNullRef' und' NSNull' – user102008

+0

@ user102008: Ja, keine Ahnung, warum sie scheinen so zurückhaltend zu sein, diese beiden zu erkennen. Sie wurden seit CFNulls Einführung AFAIK überbrückt. – Chuck

4

Toll-frei-Bridging, obwohl ein lustiger Name, ist eine sehr coole Funktion der CoreFoundation-Klassen. Im Wesentlichen läuft es darauf hinaus, dass Sie zwischen CoreFoundation- und NextStep-Klassen gleichen Namens (CFString < -> NSString, CFData < -> NSData, CFDictionary < -> NSDictionary ... um nur einige der am häufigsten verwendeten zu nennen .)

| K <

Verwandte Themen