【问题标题】:classes vs frameworks in Objective-c with C++带有 C++ 的 Objective-c 中的类与框架
【发布时间】:2025-12-06 11:35:01
【问题描述】:

我想用 C++ 创建一些库,这些库将能够模拟物理现象。我想构建一个跨平台环境,这些库独立于 GUI 进行更新,在我的情况下,PC 应用程序和 iOS 应用程序将是此类库的客户端。

在性能、易于插入 C++ 代码等方面,您有什么建议?生成一个 C++ 类并从其他扩展名为 .mm 的类调用它们,或者在 C++ 中生成一个框架。

你会推荐一些不同于 C++ 的东西来实现跨平台兼容性吗?

注意:我不是一个经验丰富的程序员,但我正在努力达到一个不错的水平。

谢谢, 亚历杭德罗

【问题讨论】:

    标签: c++ objective-c frameworks


    【解决方案1】:

    在性能、易于插入 C++ 代码等方面,您有什么建议?生成一个 C++ 类并从其他扩展名为 .mm 的类调用它们,或者在 C++ 中生成一个框架。

    这取决于您要支持的平台,但 C++ 得到了很好的支持,所以我认为应该没有问题。 C++ 也是相当低级的,所以它会给你所有你需要的性能。

    但是,当涉及到框架的概念时,您应该小心。通常,框架会为您提供一组类,您可以通过多种方式重用它们。一种,可能最重要的方法是子类化(即,您子类化并指定缺少的方法,或专门化泛型方法)。您不能真正做到这一点,例如:从 C++ 类派生的 Objective-C 类——这是不可能的(除非您定义某种包装器或桥接器)。

    因此,您将拥有您的 C++ 框架,您可以使用 C++扩展,并使用其他语言,例如 Objective C。

    你会推荐一些不同于 C++ 的东西来实现跨平台兼容性吗?

    同样,如上所述,但 C++ 比其他选项更好(例如 Java,iOS 不支持,MacOS 支持的越来越少,使用 ObjC 的主要平台)。可能只有 C 可以为您提供更广泛的可移植性。

    【讨论】:

    • 塞尔吉奥,感谢您的及时答复。所以,如果我想在 Xcode for iOS 中使用一些我也会在 PC 应用程序中使用的代码进行编程,您的建议是生成一个框架并将其包含在 Xcode 中?我现在也很清楚 C++(甚至 C)是前进的方向。
    • 我发现这个有用的链接以及关于静态库与框架的使用。 *.com/questions/6245761/…
    • 很高兴能帮上忙。我认为如果您对它感到满意,您可以使用 C++,并且不会有任何问题。您的类将被打包为 iOS/Mac 的框架和 PC 上的静态/动态库。请记住,在我上面的回答中,我以不同的方式使用了术语“框架”(请参阅​​此处:en.wikipedia.org/wiki/Software_framework),而不是可可特定意义上的“库包装”。