3

NSMutableArrayとの違いは何CFMutableArrayですか?

どちらの場合、どちらを使用する必要がありますか?

4

3 に答える 3

14

CFMutableArrayおよびNSMutableArrayは、同じタイプのCおよびObjective-Cに相当します。これらは「フリーダイヤルブリッジ」タイプのペアと見なされます。つまり、をにキャストできCFMutableArrayRefNSMutableArray*その逆も可能)、すべてが正常に機能します。どちらか一方を使用する場合は、使いやすさ(CまたはObjective-Cを使用していますか?)または使用するAPIとの互換性です。詳細については、こちらをご覧ください。

于 2009-11-18T06:06:52.170 に答える
1

OSXのAPIは階層化されており、自己管理された基本的な低レベルAPIがあり、その上に構築されたより豊富なAPIがあり、さらに低レベルAPI自体を使用します。

CFMutableArrayはCoreFoundationフレームワークの一部であり、下位レベルのAPIによって使用されます。NSMutableArray(NSはNextStepの略だと思います)はFoundationフレームワークの一部であり、AppKitやCocoaなどの高レベルのAPIで使用されます。

どちらを使用するかは、作業している場所によって異なります。Cocoaを使用してリッチユーザーインターフェイスで作業している場合は、NSMutableArrayが適切な選択です。CoreFoundationを使用してデーモンやドライバーなどを操作している場合は、CFMutableArrayを使用してください。

幸いなことに、上記で指摘したように、これらのCF / NSタイプの多くはフリーダイヤルでブリッジされているため、タイプを絶えず変換しなくても、CocoaなどのCoreFoundationAPIを使用できます。

于 2009-11-18T12:03:06.723 に答える
1

実行時には、それらは同一です。それらは同じで、フリーダイヤルのブリッジタイプです。安全に(そして効率的に)一方を他方にキャストできます。

それらは異なるタイプであり、異なる/重複する言語で利用できます。

CFMutableArrayRefは不透明なCオブジェクトインターフェイスですNSMutableArray*はObjective-Cインターフェイスです

それらは自由に交換できます。違いは、1つが不透明(OPAQUE)型へのポインターであるという宣言と、objcオブジェクトであるという宣言です。

また、objcを使用してNSMutableArrayタイプをサブクラス化することもできます(sorta-通常よりも少し多くの実装が必要です)。

于 2009-11-18T07:55:09.487 に答える