【问题标题】:Do I have to learn Objective-C for professional Mac Development? [closed]我是否必须学习 Objective-C 才能进行专业的 Mac 开发? [关闭]
【发布时间】:2010-09-21 07:42:54
【问题描述】:

我真的必须学习 Objective-C 来开发可靠的 Mac 应用程序吗?

由于 Mac 用户倾向于只使用具有良好(本机)GUI 的应用程序,我认为 Mono 和 GTK+ 或任何 Java GUI(Swing)都不能满足他们的需求。

有 Cocoa#、PyObjC 和 RubyCocoa 等项目,但它们准备好迎接黄金时段了吗?

那么我真的必须学习 Objective-C 吗? 我更喜欢动态语言。

【问题讨论】:

  • 酷,我也想知道这个。
  • 我感到学习的痛苦:(
  • Objective-C 现在有属性的点表示法。但我同意:Objective-C 很难。我们去购物吧!
  • 不是很“难”,但代码语法中有很多杂音,当我阅读objective-c代码时,它伤害了我的眼睛。
  • 起初我发现smalltalk消息传递语法有点困难,但我不得不不同意。我认为一旦你习惯了它,它会让你更容易阅读和理解代码。例如:math.divide(5, 2);哪个是除数?约定说 2 但是 [数学除法:5 乘以:2];很清楚。

标签: objective-c cocoa macos


【解决方案1】:

Objective-C 一种动态语言,就 Objective-C 部分而言。这是一篇小总结文章:http://www.macdevcenter.com/pub/a/mac/2003/04/28/objective-c.html

语法一开始很吓人,但它会在你身上成长。我建议咬紧牙关,坚持到底。​​p>

如果您想从事“真正的工作”,与其他人一起进行 Mac 编程,您将需要了解 Objective-C(无论如何,在我看来)。

【讨论】:

  • Objective-C 实际上非常好。从一开始我就一直在使用 C# 进行开发,所以 Objective-C 一开始是一个障碍,但我真的开始喜欢它了。
  • 至于方括号,这可能会有所帮助:stackoverflow.com/questions/142476/…
【解决方案2】:

我认为简短的回答是肯定的,你需要学习 Objective-C。

Python 和 Ruby 的“桥梁”是有效的,但这并不是 Apple 自己推动或使用的。几年前,有一个 Java 桥接至 Cocoa,但现在已弃用。谁知道非 ObjC 语言会发生什么?

无论如何,Objective C 是非常动态的。可能不像 Ruby/Python,但它肯定不像 C++。

【讨论】:

  • 写这个答案时可能不是这种情况(我不记得了),但是 Mac OS X Server 上的 Podcast Producer 是用 Ruby 编写的。
【解决方案3】:

简短回答:是的:)

【讨论】:

  • 更长的答案:是的,如果你试图避免它,你只会给你自己和你的用户带来痛苦。
【解决方案4】:

即使您选择使用其中一种桥梁,您也绝对需要学习 Objective-C。 Apple 已经通过他们对 Java 的处理表明,他们对通过 Objective-C 以外的任何方式为 Cocoa 的使用提供大量支持或向后兼容并不真正感兴趣。

因此,如果您愿意,可以使用其中一种桥接器,但要牢牢掌握 Objective-C 运行时和桥接器,以便您可以在需要时自行管理它们。

【讨论】:

    【解决方案5】:

    简短的回答是肯定的,较长的回答是“你可以使用 Objective-C++”。无论哪种方式,您都必须至少学习一些 Objective-C。一旦您开始深入研究 Cocoa(用于构建 Mac OS X 应用程序的框架)、Xcode 工具和 Apple 人机界面设计指南,您就会意识到 Objective-C 才是正确的选择。

    【讨论】:

      【解决方案6】:

      您不仅必须了解 Objective-C(简单的部分),而且您必须非常熟悉简单的旧 C。在我看来,这对大多数人来说是最大的挑战。

      【讨论】:

      • 我认为你不需要了解 C 语言中的任何“硬”知识就可以成为一名有效的 ObjC 程序员。对于大多数应用程序,如果您使用指针和 C 字符串,您可能做错了!话虽如此,了解 C 肯定会让你成为更好的 ObjC 程序员。
      • 在我的书中,如果你对指针不满意,你必须正确地称自己为 C 程序员,包括 Obj-C 和 C++
      • 如果你的意思是你需要知道“for”和“switch”之类的基本c语句我同意,但如果你在谈论指针,我不同意。
      • 你需要理解指针和这种类型的 C 魔法才能理解 Objective-C 运行时的工作原理,这是在 Cocoa 或其他 Objective-C 平台中编程最有趣的事情之一。您可能认为自己不需要它,但每当您知道自己了解所有这些 smalltalk-y 魔法实际上是如何实现时,您的脑海中就会充满幸福。
      【解决方案7】:

      如果您已经了解 C,Objective-C 很容易学习。

      Ruby 和 Python 对于“真正的”Mac 应用程序都是可行的。 ADC 在the topic 上有几篇文章。 MacRuby 看起来会是 replacing RubyCocoa

      我仍然建议学习 Objective-C。您找到的大多数示例代码都是用 Objective-C 编写的,而书籍往往是 Objective-C 的(尽管 Pragmatic Programmers 有一个 RubyCocoa book 正在编写中。大多数 Cocoa 应用程序都是用 Objective-C 编写的。

      Objective-C 是动态的。拿一个closer look 来说,它并不像人们想象的那么吓人。 Cocoa 的学习(或不学习)曲线往往更陡峭。

      【讨论】:

        【解决方案8】:

        一般来说是的;但即使您(正确地恕我直言)排除了 Mono、GTK 和 SWING,因为它们不适合 GUI,请尝试 Qt。它真的尊重 Mac GUI 标准(HIG:人机界面指南),并且可以在 C++、Python 和 Java 上同样编程。最后一个版本是基于 Cocoa 的,支持 64 位。

        您从 Objective-C 获得的 Qt 中唯一缺少的就是那些糟糕的不符合 HIG 的现代 Apple 应用程序(是的,Aperture 和 Final Cut,我在看着你!)

        【讨论】:

        • 抱歉,我从来没有见过真正适合 Mac OS 的 Qt 应用程序。这可能是愚蠢的开发人员的错,但任何远程漂亮的 Mac 应用程序都没有使用 Qt 完成。据我所知。不过,我很想通过一个例子来纠正这一点。
        【解决方案9】:

        有少数成功的 Cocoa 应用程序是用桥接语言编写的,因此您不一定需要大量使用它,但您确实需要学习它。试图学习用桥接语言编写 Mac OS 程序的人对自己造成了极大的伤害。桥接语言是很好的工具,但它们能让了解桥接语言和 Objective C 的人变得更有效率,而不是跳过学习 Objective C。

        为了有效地使用 PyObjC 或 MacRuby 之类的东西,您需要真正了解原生运行时如何处理桥接语言和 Objective C 运行时之间可能发生的所有阻抗不匹配。

        【讨论】:

          【解决方案10】:

          我真的必须学习 Objective-C 来开发可靠的 Mac 应用程序吗?

          目前,是的。

          由于 Mac 用户倾向于只使用具有良好(本机)GUI 的应用程序,我认为 Mono 和 GTK+ 或任何 Java GUI(Swing)都不能满足他们的需求。

          正确。

          有 Cocoa#、PyObjC 和 RubyCocoa 等项目,但它们准备好迎接黄金时段了吗?

          Cocoa#:我不知道,因为我不使用 C#。

          PyObjC:有点,但是 Python 中的 Cocoa 有点像 hack,因为 Python 还不够 Smalltalky。

          RubyCocoa:也许吧。不过,我正在等待MacRuby 成熟。另见:

          【讨论】:

          • 是的,不要乱用 RubyCocoa。 MacRuby 的发展非常好。尤其是热可可。
          【解决方案11】:

          不,你不必学习 cocoa,但它值得一看,因为它是一个非常强大的 api 并且有很好的文档记录,如果你已经了解 C,那么它非常容易(老实说,它是 - 我知道它在语法上看起来令人生畏)。

          OS X 上的桥接方法的问题在于它似乎非常不成熟,并且只为准备阅读与主要 cocoa api 相关文档的人真正设计。

          老实说,如果您了解 c,您将通过一本书了解 obj-c 的基础知识,Arron Hilligas(拼写?!?!)的那本书非常棒。

          【讨论】:

            【解决方案12】:

            如果你足够努力,你可以在不使用 Objective-C 的情况下制作软件,它有可能很棒,但最终它不会很好。你会花更多的时间试图让一种语言做一些它不是绝对最擅长的事情。在 WWDC 上,我穿了一件衬衫,上面写着“学习 Objective-C 或退休”,这对一些仍然紧紧抓住 Pascal 生命的最后一根线的人来说并没有得到很好的理解,但重点是完全正确的——Objective C 是它在 Mac 上,假装不这样做是对自己的伤害。

            话虽如此,您绝对不应该排除平台上用于扩展您的应用程序的桥梁 - Bill Bumgarner 是quick to point out Twisted 网络框架通过 PyObjC 桥梁为 Cocoa 应用程序提供了多少功能。

            【讨论】:

              【解决方案13】:

              我们的第一个应用是使用 Python 构建的,使用 PyObjC 桥接器。根据经验,我可以告诉您,要使用桥接器构建应用程序,您需要学习:

              1. 这座桥的特质
              2. 用桥接语言(我的例子是 Python)读写代码
              3. 阅读 Objective-C 中的代码(所有有用的示例代码都在 Obj-C 中)
              4. 用 Objective-C 编写伪代码(如果您想在邮件列表中提问或类似问题)
              5. 可可

              在所有需要学习的东西中,Cocoa 是最重要的。这是真正有趣的东西进来的地方,也是你真正需要把你的大脑包裹起来的东西。在完成这个 PyObjC 项目之后,我用 Obj-C 编码变得非常容易,即使我之前没有用 C 编码的经验。

              所以我的建议是:专注于学习 Cocoa,并使用最适合作为工具的语言(Obj-C)。如果您找到使用桥接器的特定原因,例如需要可以处理网络 SQL 的 ORM 等。您可以应用大约 90% 的知识来编写您的第一个 Obj-C/Cocoa 应用程序(s ) 在桥接项目中。

              最后:我真的不明白许多刚接触这个平台的人对学习 Objective-C 的阻力。学习新知识并用这些新知识构建最好的东西不是很令人兴奋和满足吗?

              【讨论】:

              • 我们这些前 Newton 开发人员被宠坏了 - XCode/ObjC 与 NTK/NewtonScript 相比显得非常笨重。
              • 坦率地说,我认为 Objective-C 很难让人喜欢。我学过Objective-C,但我一点也不喜欢。我用得越多,我就越不喜欢它。我对从 Objective-C 迁移到 Python 很感兴趣(我觉得 Python 更高效、更有趣)。
              【解决方案14】:

              当您使用 XCode 时,事实证明不使用脚本语言进行编程并没有那么糟糕。 GDB集成非常好;我主要是 Perl 人,我发现 XCode 调试器非常好用且非常易于使用。

              “修复”功能的实用性会让您大吃一惊。想象一下在你的 ObjC 代码中发现一个错误,修复它,然后告诉调试器继续。它实际上在很多情况下都有效。

              试试 ObjC。您可能会发现自己比您想象的更喜欢它。

              【讨论】:

                【解决方案15】:

                “必须”,嗯...从技术上讲,没有。

                由于大多数 Mac 应用程序工作都是通过 ObjC 完成的(我可能会添加一个很好的理由),我不会自欺欺人地学习它。

                【讨论】:

                  【解决方案16】:

                  见鬼,不。您可以使用多种语言来制作漂亮的 GUI。这仅取决于平台的通常/最简单的解决方案是什么。在 Mac OS X 的情况下,Objective-C 和 AppKit 是非常容易使用的选择。但是,我有时会使用 REALBasic,这允许跨平台开发(当然,性能也会受到影响)。

                  所以这真的取决于你想投入多少工作。如果您想真正进行认真的 Mac 开发,您应该学习 Objective-C。但是没有它你也可以过得去....

                  【讨论】:

                    【解决方案17】:

                    没有。虽然 Apple 大力推动 Cocoa,但仍然支持 Carbon。它使用纯 C 代替。至于好看的 GUI,就用 Interface Builder。

                    但是,我必须说 Objective-C 是一门很棒的语言。它真的很简单(这是我的第一语言)而且非常强大。

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 2010-09-15
                      • 2011-08-05
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2010-10-26
                      • 1970-01-01
                      相关资源
                      最近更新 更多