2011-10-21 5 views
0

C++クラスメンバ関数でperformSelectorを何とか呼び出せますか?performSelector on C++クラスメソッド?

私は、performSelector呼び出しを受け取るダミーのobjcクラスと、このダミーのクラスが目的のC++メンバー関数を呼び出すことを考えています。

もっと良い方法がありますか?

答えて

1

内部的な違い(目的のcランタイムが必要なobjc_msgSend()を参照)が原因で、C++クラスのインスタンスで目的のcメッセージを呼び出すことはできません。関数ポインタを調べるか、boostbindまたはfunctionのようなC++ライブラリを調べることができます。あるいは、あなたが言うように、obj cメッセージをC++のメソッド呼び出しとして転送するラッパーを作ることができます。

+0

特定のスレッドでセレクタを実行するには、boost/bindを使うことができますか?(メインスレッド) – eugene

+0

boost :: bindはboost :: thread http://blog.emptycrate.com/と非常に大きな話題ですノード/ 277。あるいはperformSelectorOnThread型のメッセージをオブジェクトに送ることができ、C++コードはそのスレッド上で実行されます。 – jbat100

0

(私はちょうどであるため、スレッドのすぐメソッドを呼び出すにしたくない理由は)これを行うには良い方法はありません。 Objective-Cダミーレシーバーを作成し、そこでC++クラスを呼び出します。私はC++クラスでUIイベントを受け取るために同じことをしました。