Objective-C カテゴリを使用して C++ クラスを拡張できるかどうか疑問に思っています。
3 に答える
いいえ、できません。カテゴリ/クラス拡張は、Objective-C ランタイムに依存するメカニズムです。ただし、C++ コードを Objective-C++ クラスでラップすることもできますし、これをカテゴリで拡張することもできます (試したことはありませんが)。
Objective-C と C++ ではクラスの実装がまったく異なるため、Objective-C を使用して C++ クラスにメソッドを追加することはできません。ただし、Objective-C と C++ は非常にうまく連携します。Objective-C コードから C++ メソッドを呼び出したり、その逆を行ったりできます。また、Objective-C ソースと C++ ソースを同じファイルに混在させることもできます。これは、Objective-C++ として知られています。
他の回答では、C++ クラスを Objective-C クラスにラップすることが言及されています。そのためには、対象の C++ クラスのインスタンスを指すインスタンス変数を持つ Objective-C クラスを作成します。次に、C++ インターフェイスと同等の Objective-C クラスのメソッドを作成し、それらの各メソッドで C++ オブジェクトのパートナー メソッドを呼び出すだけにすることができます。