0

intObjective-C インスタンス メソッドから値を取得する必要がある純粋な C++ クラスがあります。

C++ が Objective-C メソッドを直接呼び出すことができないことを理解しています。

私は、Objective-C で作業し、純粋な C++ クラスにデータを渡すことができる Objective-C++ クラスを持っています。

ただし、純粋な C++ クラスがint値の計算と取得を要求できるようにする方法がわかりませんでした。つまり、純粋な C++ は、必要なときに (関数ポインターなどを介して) その値を取得できる必要があります。

これがどのように達成されるか知っている人はいますか?

4

1 に答える 1

2

C++ は確実に Objective-C コードを呼び出すことができます。通信するコードを .cpp ではなく .mm ファイルに保存すると、Xcode が残りの処理を行います。

.mm ファイルには Objective-C++ コードが格納されるため、機能します。

[編集]
おそらく C++ でいくつかのビジネス ロジックがあり、それを Objective-C の UI と組み合わせたいと思いませんか? ビジネス ロジックはおそらく複数のプラットフォームで共有されているため、すべてのコードを Objective-C++ としてコンパイルすることはできません。

そのため、基本的に Objective-C コードを Objective-C++ ラッパーで「ラップ」できます。

// myUI.h (C++ header)
class myUI {
    void doSomething1();
    int doSomething2();
}

// main.cpp (C++ code)
int main() {
    myUI ui;
    printf("%d\n", ui.doSomething2());
    ui.doSomething1();
    return 0;
}

// myUI.mm (Objective-C++ code)
int myUI::doSomething2() {
    return [[MyController sharedController] doSomething2];
}

// myUI.cpp (C++ code)
void myUI::doSomething1() {
    printf("Hi!\n");
}
于 2012-12-26T14:02:02.350 に答える