c++ - 从纯 C++ 类调用 Objective-C 方法

标签 c++ objective-c

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

我明白 C++ 不能直接调用 Objective-C 方法。

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

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

有人知道这是怎么实现的吗?

最佳答案

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");
}

关于c++ - 从纯 C++ 类调用 Objective-C 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14041609/

相关文章:

c++ - QStackedWidget 从第 1 页导航到第 2 页

c++ - 函数的语法显式特化

objective-c - 这种形式的范围界定是如何命名的?

c++ - 为什么 Mac OSX pipe(2) 中的 read(2) 将 0x7F 插入到字符串中?

c++ - 为什么我在 C++ 中收到针对此基于范围的 for 循环的警告?

ios - 相交节点 ---- Objective-C - Swift - iOS - SpriteKit 节点

objective-c - 意外的 NSAutoresizingMaskLayoutConstraint 从 Nib 添加 UIView 到自动布局 Storyboard场景

iphone - 在iOS App中执行Google身份验证后如何进行

ios - 用于立即分配变量的 block 的运行时开销

c++ - 使用 std::vector 进行 Eigen::MatrixXd.block 赋值