2009-04-30 6 views
31

iPhone開発とObjective-Cの新人として、ここ数週間、CFフレームワークとNSフレームワークの間に「フリーダイヤルフリーブリッジ」が多数登場しました。フリーダイヤル

特定の例は、CFStreamとNSStreamです。

これらのブリッジのすべてを文書化し、リソースを使用するリソースが存在しますか?あるタイプのオブジェクトから別のタイプのオブジェクトにキャストするのと同じくらい簡単ですか?

私は現在、iPhone SDK内で厳密に許可されていないNSStream呼び出しを使用しており、CFStream呼び出しを使用する必要があることを理解しています。

EDIT:how TFB works

+2

この件に関する素晴らしいブログ記事があります。 http://ridiculousfish.com/blog/archives/2006/09/09/bridge/をチェックしてください。私はそれがより良く理解されるまで、フリーダイヤルのブリッジを心配していました。 – Mark

答えて

37

フリーダイヤルブリッジに関する有用な記事は、データ構造は交換可能であることを意味します。キャストと同じくらい簡単です - それは "フリーダイヤル"の部分です。あなたはブリッジの片側にタイプを使用することができますどこでも、あなたは他を使用することができます。例えば、CFStringを作成してNSStringメッセージを送るか、NSArrayを作成して配列をCFArray関数に渡すことができます。

アップルはlist of the supported toll-free bridged typesをサイトに保有しています。

+1

[フリーダイヤルフリーのデータ型](http://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFDesignConcepts/Articles/tollFreeBridgedTypes.html#//apple_ref/doc/uid/20002401)へのリンクが更新されました。 -767858) – 0xced

+0

興味深い。彼らは 'CFNullRef'と' NSNull'をリストアップしていません。 – user102008

+0

@ user102008:そうですね、彼らがなぜそれらの2つを認めるのが嫌なのか分かりません。彼らはCFNullの紹介AFAIK以来橋渡しを受けてきました。 – Chuck

4

面白い名前はありますが、フリーダイヤルは、CoreFoundationクラスの非常にクールな機能です。基本的には、CoreFoundationクラスとNextStepクラスを同じ名前(CFString < - > NSString、CFData < - > NSData、CFDictionary < - > NSDictionary ...の間でキャストすることができます。 )

| K <

関連する問題