面倒で複雑な下準備が必要だったObjective-C++ですが、最近はとても手軽に扱えるようになりました。本記事ではObjective-C++の使い方や概念、注意点について解説します。関連知識Objective-C++とはObjective-C++はObjective-CとC++を混在させたプログラミング言語です。Objective-C上でC++の構文や機能が利用できる他、C++で書かれた既存のライブラリやコードを活用することも可能となっています。そもそもObjective-C自体は、C言語にSmalltalk風のオブジェクト指向機構を組み込んだサイボーグ言語として知られていますが、Objective-C++ではこのC言語の代わりにC++が使われる形となっています。そのためObjective-C++の活用によって、C++にしかない便利な記法や機能をObjective-Cの世界で活用できるようになるというメリットが得られます。既存のObjective-Cソースファイルの拡張子をmmに変更するだけで、簡単にObjective-C++が使えるようになります。Xcode側でも、既存のObjective-Cソースファイルの拡張子をmからmmに変換するだけで、自動的にObjective-C++ソースとしてコンパイルされるようになります。リスト等、C++由来の便利な記法が利用できます。@endC++関連の処理や宣言は実装ファイル側に書く基本的にC++関係のコードは実装ファイル側(ObjCpp.mm)に記述します。ヘッダーファイル側(ObjCpp.h)にC++関係の記述を行ってしまうと、ObjCpp.hを利用する他のソースファイルもObjective-C++ソースとしてコンパイルしなければならなくなるため注意が必要です。ヘッダファイル側にはあくまで他の純粋なObjective-Cコードとやり取りするためのメソッド/プロパティのみを定義するようにしましょう。list;@endこうすると見かけ上はObjective-Cのヘッダファイルとなるため、他の純Objective-Cソースから利用することが可能になります。関数/変数の公開方法Objective-C++で外部宣言された関数や変数をObjective-C側でそのまま使用することはできません。<objc/NSObjCRuntime.h>ヘッダのFOUNDATION_EXTERNを借用すれば、上記のプリプロセッサによる分岐は不要になります。8以前のIDEに注意)。それ以外はObjective-Cソース編集時とほとんど変わりません。入力補完やシンタックスハイライトも普通に効きます。ただ型チェックが厳しくなる分、明示的な型キャストが必要になる場合があります。Objective-C++移行時には注意が必要です。(OCPP)まとめただでさえ天使のObjective-CがC++という翼を持って女神になろうとしてる。