0

我有一个纯 C++ 类,它需要int从一些 Objective-C 实例方法中检索一个值。

我知道 C++ 不能直接调用 Objective-C 方法。

我有一个 Objective-C++ 类,它允许我使用 Objective-C 并将数据传递给我的纯 C++ 类。

但是,我还没有想出一种方法来允许纯 C++ 类请求int计算和检索值。换句话说,纯 C++ 需要能够在需要时检索该值(通过函数指针或其他方式)。

有谁知道这是如何实现的?

4

1 回答 1

2

C++ 绝对可以调用 Objective-C 代码。将通信的代码存储在 .mm 文件而不是 .cpp 中,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 回答