【问题标题】:I'm developing GUI apps on Mac. I have been using C++ for 10+ years. Do I need to switch to Objective C?我正在 Mac 上开发 GUI 应用程序。我已经使用 C++ 10 多年了。我需要切换到Objective C吗?
【发布时间】:2010-01-21 13:22:39
【问题描述】:

我在 C++/Linux 上编码已经 10 多年了。

我正在转行做 Mac 开发。

我的开发涉及 GUI 组件。

是我学习 Cocoa/Objective-C 的唯一选择,还是有办法包装 Cocoa 并在 C++ 领域使用它?

谢谢!

【问题讨论】:

  • 标准方法是使用 Cocoa 编写 GUI 并包装 C++ 核心。

标签: c++ objective-c cocoa


【解决方案1】:

是的,你需要学习 Objective-C。此外,如果您不需要,您将不会获得太多收益。难学的不是语言,而是 Cocoa 框架(不是因为它本身就很难,而是因为它太庞大了)。

【讨论】:

  • +1,但我不会称 Cocoa“难学”。熟悉约定确实需要时间,但所有框架都是如此。
【解决方案2】:

您可以使用 Carbon,但已弃用。

正如 Ole 所说,如果你有 C++ 背景,那么学习 Objective-C 并不难——如果你使用 Objective-C++,你可以混合使用多种语言(这可能很有用,但通常最好将使用不同的代码进行分区语言 - 所以 GUI 层使用 Objective-C/ Cocoa,核心逻辑使用 C++。我在我的 iPhone 游戏中就是这样做的,vConqr)。

如果您使用 C++ 完成过 GUI 工作,我想您会理解为什么选择 Objective-C 用于 Cocoa。它非常适合事件驱动的设计,并且有许多自然适合的抽象。但是,当您进入更抽象的领域时,特别是如果您使用大量容器和算法,您可能会开始发现这些限制有点烦人。但是给它时间 - 还有其他一些不是很明显的有用抽象(动态类型、键/值编码和其他形式的反射、类别...)。

您可能还会发现this stackoverflow question 很有用。

【讨论】:

    【解决方案3】:

    不,我认为你不需要学习 Objective-C。您可以使用 Qt 框架在 Mac 上使用 C++ 开发应用程序。

    【讨论】:

    • 如果你想让它们真正作为 Mac 应用程序工作,Qt 应用程序永远不会完全适合 Mac。
    • 我只是说这不是义务,更像是一种选择。
    • Qt 不太适合 Mac 怎么办?不匹配是否严重到应该学习一种不同的(仅限 Mac!)编程语言和新框架?
    • 对很多人来说,答案是肯定的——不匹配值得学习 C 的超集(顺便说一句,Objective-C 不仅仅是 Mac)和新框架。这显然是每个开发人员需要根据需求、预期客户和市场竞争力做出的决定。幸运或不幸的是,许多 Mac 用户比其他平台更具辨别力,并且不能接受“不匹配”和 UI 气味。
    • 没有理由让 QT 适合,因为 Cocoa 工作得很好。恕我直言,学习 Objective-C 是制作出色(甚至是优秀)Mac 软件的必要条件。这些天不是用 Cocoa 编写的软件看起来“奇怪”和“错误”。
    【解决方案4】:

    如果您只打算在 Mac 应用程序上工作,那么请学习 Objective-C 和 Cocoa 框架。 Cocoa 应用程序可以在较新的 Mac OS X 版本中“免费”获取新功能,并且将比 Qt 等跨平台应用程序框架更具前瞻性。

    Cocoa 框架有很多方面(统称为),最好还是坚持使用本机应用程序框架来为您的客户(最终用户)服务。这才是真正重要的,而不是学习一门新语言或框架的短期不便(随工作而来,适应或死亡)。

    很快你就会和我们其他人一样对 Xcode 感到沮丧。

    【讨论】:

      【解决方案5】:

      我在 Mac 上使用 WxWindows 进行工具开发。花了一点时间,但我得到了我在 Windows 上使用的基于 Jam 的 c++ 管道,它运行良好。要让这一切正常工作,您唯一需要记住的是创建正确的应用程序规则……很容易作为一个堵塞规则工作。

      【讨论】:

      • 你知道wxCocoa的状态吗?我在 Windows 和 Linux 上使用过 wxWidgets,但从不需要移植到 Mac。
      • 过去几个月我一直在使用 wxCocoa,成功率很高。目前在 64 位雪豹上一切正常。将其集成到我的构建设置中有几个小问题,但其他方面都很好。
      【解决方案6】:

      正如其他一些答案中提到的,有许多支持 mac 的跨平台 GUI 库。比如 Qt 和 WxWindows。你可以使用它们中的任何一个,我个人只使用过 Qt,并且在使用 Java 和 C 工具包之后发现使用它非常愉快。

      【讨论】:

        【解决方案7】:

        为了使用本机 GUI 库,您也可以使用 Python (PyObjC)。 Java 还能够在 OS X 中制作具有原生外观的应用程序。

        【讨论】:

          猜你喜欢
          • 2015-04-09
          • 2015-02-22
          • 1970-01-01
          • 2016-06-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多