NSMutableArray
との違いは何CFMutableArray
ですか?
どちらの場合、どちらを使用する必要がありますか?
CFMutableArray
およびNSMutableArray
は、同じタイプのCおよびObjective-Cに相当します。これらは「フリーダイヤルブリッジ」タイプのペアと見なされます。つまり、をにキャストできCFMutableArrayRef
(NSMutableArray*
その逆も可能)、すべてが正常に機能します。どちらか一方を使用する場合は、使いやすさ(CまたはObjective-Cを使用していますか?)または使用するAPIとの互換性です。詳細については、こちらをご覧ください。
OSXのAPIは階層化されており、自己管理された基本的な低レベルAPIがあり、その上に構築されたより豊富なAPIがあり、さらに低レベルAPI自体を使用します。
CFMutableArrayはCoreFoundationフレームワークの一部であり、下位レベルのAPIによって使用されます。NSMutableArray(NSはNextStepの略だと思います)はFoundationフレームワークの一部であり、AppKitやCocoaなどの高レベルのAPIで使用されます。
どちらを使用するかは、作業している場所によって異なります。Cocoaを使用してリッチユーザーインターフェイスで作業している場合は、NSMutableArrayが適切な選択です。CoreFoundationを使用してデーモンやドライバーなどを操作している場合は、CFMutableArrayを使用してください。
幸いなことに、上記で指摘したように、これらのCF / NSタイプの多くはフリーダイヤルでブリッジされているため、タイプを絶えず変換しなくても、CocoaなどのCoreFoundationAPIを使用できます。
実行時には、それらは同一です。それらは同じで、フリーダイヤルのブリッジタイプです。安全に(そして効率的に)一方を他方にキャストできます。
それらは異なるタイプであり、異なる/重複する言語で利用できます。
CFMutableArrayRefは不透明なCオブジェクトインターフェイスですNSMutableArray*はObjective-Cインターフェイスです
それらは自由に交換できます。違いは、1つが不透明(OPAQUE)型へのポインターであるという宣言と、objcオブジェクトであるという宣言です。
また、objcを使用してNSMutableArrayタイプをサブクラス化することもできます(sorta-通常よりも少し多くの実装が必要です)。