【问题标题】:Alternative paradigm for Mac OS X developmentMac OS X 开发的替代范例
【发布时间】:2009-11-17 00:18:05
【问题描述】:

目前开发 Mac OS X 应用程序的标准方法是使用 MVC 范例的 XCode/Objective-C/Interface Builder。

还有其他选择吗?

我想使用 Interface Builder(也是 XCode),但我更愿意使用不同的编程语言。我来自 .NET 编程,您可以在其中将单击委托给某个功能等。Mac 有类似的东西吗?我宁愿远离像 Titanium、Qt 或 RealBASIC 这样的引导式应用程序。

【问题讨论】:

  • 您已经可以使用 Interface Builder 让点击调用某些方法。你确定你知道你在拒绝什么吗?
  • C# 中的委托是 lambda 或闭包的一种形式。在 10.6 之前,objective-c 中不存在该语言功能。它确实可以成为定义语言特征的主要风格。
  • 您正在寻找的是目标-动作范式。在 Xcode 中,单击执行代码的唯一方法实际上是指定要执行的方法。
  • 虽然直到最近才出现闭包,但 Objective-C 有一个非常强大的委托机制,它使用允许同等灵活性的协议和一个非常动态的运行时环境......另外说“好吧它没有“直到现在才知道”,因为这个问题是现在提出的——而不是更早的。

标签: objective-c cocoa model-view-controller macos


【解决方案1】:

Objective-c 非常强大,与 Cocoa 和 Interface Builder 一起可以让您在 Mac OS X 上开发 UI。

您可以将 UI 中的目标与执行的代码中的操作等相关联。

您可以查看构建示例应用程序的IB guideconnections and bindingsIntroduction to Cocoa Application Tutorial(查看桥接模型和视图:控制器部分了解如何连接 UI 元素代码)——如果你对 Objective-c/Cocoa 感兴趣的话。

【讨论】:

    【解决方案2】:

    您已经可以将点击分配给 Objective-C 中的方法 - 您可以定义一个返回类型为 IBAction 的方法,然后您可以将其连接到按钮中的许多可能事件,或与此相关的许多其他控件。

    在决定转向其他语言之前先学会使用这些工具,因为经过几十年的发展,这里有很多深度。

    【讨论】:

    • 虽然我同意 IB 和 XCode 提供了一个强大的开发平台,而且可可库在很多方面都很棒。他们也有很多缺点。特别是如果您来自像 C# 或许多其他具有您认为理所当然的功能的平台。闭包、原生正则表达式支持和 Web 服务集成是许多语言内置并且非常健壮的部分内容,但 obj-c/cocoa 不支持它们。
    • Cocoa 在 10.6 API 中确实有闭包,它们被称为块,许多现有的 API 都有接受块作为参数的新方法。如果你想要 RegEx,请到这里:regexkit.sourceforge.net
    • 也许其中一些可以通过框架/外部框架获得,或者作为 c/c++ 库,或者只是任何人都不需要?
    • RegEx 支持内置于平台中,只是没有很好地公开——这就是 RegExKit 的挂钩。如果 Cocoa 没有为您提供一些功能,请查看 CF 级别的框架。我使用过许多其他语言(包括一些 C# 开发),我重申一下,Objective-C 和框架比大多数人意识到的要多得多。您列出的每个项目都包含在 Mac 框架中,在某种程度上,有些项目在 iPhone 上的覆盖较少,但您仍然可以轻松使用所有这些。 OS X 平台有 Core Data/Core Animation 之类的东西。
    【解决方案3】:

    关于 SO 的问题太多了。特别是在 mac/iphone 标签中。有人发帖询问如何使 mac/iphone 开发更像他们已经知道的一些 IDE/范式。

    Mac 开发不同于 C#、.NET 等。它的功能并不逊色,只是不同而已。 Cocoa 有许多优势,当您尝试应用您的旧思维方式时,这些优势可能并不明显。

    不要对这里提到的任何项目(PyObjC、MacRuby 等)提出异议,但它们会同样令人困惑,因为它们是原生开发人员工具之上的一个薄(且有漏洞)抽象层。

    如果您打算在 Mac 上进行开发,请花点时间学习 Objective-C/Cocoa/Xcode/IB。这不是你知道的方式,但如果你给它一个机会,这是一个好方法。一旦你知道它,你仍然会受到批评,但毫无疑问,你也会发现你真正喜欢它的地方。

    如果您不喜欢学习新的平台/范式/环境,只需学习一次 java 或 qt 即可。

    【讨论】:

      【解决方案4】:

      根据您的语言经验和目标要求,您可能会发现MacRuby 非常有趣。

      还有PyObjC 和一个名为RubyCocoa 的旧红宝石桥。

      但是,如果您正在寻找 iphone 开发,我只听说过来自 Novell 的 MonoTouch,并且需要许可费用。

      请注意,上述所有技术都允许与它们的本地语言库以及 Cocoa 和 Carbon 中的库和框架无缝集成。

      使用这些技术会给你一个相当干净的原生感觉应用程序。但是,即使不是全部,也有很多仍然需要您使用 Interface Builder。我知道我也花了一段时间才习惯。

      【讨论】:

        【解决方案5】:

        有很多桥梁。 PyObjC、CamelBones (Perl)、JSCocoa (JavaScript)、Cocoa#、HOC (Haskell) 等。唯一真正接近无缝的是 MacRuby,它是基于 Mac OS X 核心技术(如 LLVM 和 Objective)之上的 Ruby 实现-C 运行时和垃圾收集器,被设计为与 Objective-C 的对等语言,用于 Cocoa 开发。不过,它仍处于测试阶段。它确实让您可以指定一个 Ruby 块作为 UI 元素的操作处理程序,我认为这是您喜欢做的事情。

        【讨论】:

          【解决方案6】:

          很难说你更喜欢详细阐述语言还是设计模式。

          请参阅 Objective-C++、Python 或 Ruby(Java 桥已弃用)。请记住,ObjC 是 C 的超集,您可以在同一应用程序/源中使用 C、C++ 和 ObjC。 Soo...您可能最喜欢使用 Objective-C++。这听起来像是一个混合对象,但它仅支持同一程序中的对象和语法(即,您不基于 C++ 类的 ObjC 类,但您可以使用成员)。实际上,这是一个很大的话题,尽管我从未见过超过几页的文章。

          就设计模式而言,好吧,你就是程序员 :)

          【讨论】:

            【解决方案7】:

            您最好的选择是使用 Cocoa Sharp 对 winforms 的支持。 cocoasharp 网站上有一些教程。这会给你一个良好的开端,但恐怕你不会用这种方法走得太远,Cocoa 并不真正适合这种方法,最终代码会变得难以管理。

            如果您不介意 Cocoa 约定但不是真正进入 Objective-C,您可以做的是使用 Cocoa Sharp(即 C#)使用 Cocoa 的 MVC 范例进行编码。这样,您仍然可以使用 Interface Builder(我不太确定 Snow Leopard 是否支持 XCode)并使用熟悉的语言。

            看起来这种方法很有成效,因为人们甚至在用这种方式开发 iPhone 应用程序。

            【讨论】:

              【解决方案8】:

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-07-07
                • 2011-09-24
                • 2011-06-09
                • 2023-04-10
                • 2012-11-09
                相关资源
                最近更新 更多