我是否必须学习Objective-C才能进行专业的Mac开发?

时间:2008-11-07 16:43:04

标签: objective-c cocoa macos

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

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

有像Cocoa#,PyObjC和RubyCocoa这样的项目,但它们是否准备好迎接黄金时段?

所以我真的需要学习Objective-C吗? 我更喜欢动态语言。

17 个答案:

答案 0 :(得分:34)

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

一开始语法很吓人,但它会逐渐增长。我建议咬住子弹并穿过它。

如果你想在与其他人一起做Mac编程的“真正工作”中工作,你需要知道Objective-C(在我看来,无论如何)。

答案 1 :(得分:13)

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

Python和Ruby“桥梁”的工作,但它不是苹果推动或使用自己的东西。几年前,有一个与Cocoa的Java桥梁,但现在已被弃用。谁知道非ObjC语言会发生什么?

无论如何,Objective C非常有活力。不像Ruby / Python那样,但它肯定不像C ++。

答案 2 :(得分:12)

简答:是:)

答案 3 :(得分:9)

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

  1. 桥梁的特质
  2. 以桥接语言(在我的情况下为Python)中读写代码
  3. 阅读Objective-C中的代码(所有有用的示例代码都在Obj-C中)
  4. 在Objective-C中编写伪代码(如果您想在邮件列表或类似问题上提问)
  5. 可可
  6. 在所有要学习的东西中,可可是最重要的。这是真正有趣的东西进来的地方,你真正需要的东西包裹你的大脑。在完成这个PyObjC项目之后,我很容易在Obj-C中编码,即使我之前没有用C语言编写代码。

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

    最后:我并不真正了解很多不熟悉平台的人必须学习Objective-C。学习新东西并用这种新知识建立最好的东西,难道不是令人兴奋和满足吗?

答案 4 :(得分:5)

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

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

答案 5 :(得分:4)

  

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

目前,是的。

  

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

正确。

  

有像Cocoa#,PyObjC和RubyCocoa这样的项目,但它们是否准备好迎接黄金时段?

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

PyObjC:排序,但Python中的Cocoa有点像黑客,因为Python不够Smalltalky。

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

答案 6 :(得分:3)

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

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

答案 7 :(得分:1)

如果您已经了解C,那么Objective-C非常容易学习。

Ruby和Python都适用于“真正的”Mac应用程序。 ADC在the topic上有一些文章。 MacRuby看起来像是replacing RubyCocoa

我仍然建议学习Objective-C。您找到的大部分示例代码都将在Objective-C中,并且书籍往往是Objective-C(尽管实用程序员正在使用RubyCocoa book。大多数Cocoa应用程序都是用Objective-C编写的。

而Objective-C是动态的。拿一个closer look,它并不像人们想象的那样令人生畏。它的可可往往具有更陡峭的学习(或学习)曲线。

答案 8 :(得分:1)

不仅你必须了解Objective-C(简单的部分),你必须对普通的老C很满意。在我看来,对大多数人来说,这是最大的挑战。

答案 9 :(得分:1)

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

答案 10 :(得分:0)

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

OS X上的桥接方法的问题似乎是非常不成熟,只是为那些准备阅读与主cocoa api相关的文档的人设计。

老实说,如果你知道c你会用书来学习obj-c的基础知识,那么Arron Hilligas(拼写?!?!)就是一流的。

答案 11 :(得分:0)

如果你努力尝试,你可以在不使用具有潜力的Objective-C的情况下制作软件,除非在一天结束时它不会很好。你会花更多的时间来尝试一种语言来做一些不是最好的语言。在WWDC上,我穿了一件上面写着“学习目标-C或退休”的衬衫,这些衬衫对于一些仍然深深沉浸在Pascal生命最后线索中的人来说并没有过得太好,但这一点完全正确 - 目标C在哪里它出现在Mac上,并假装不做是为了让自己受到伤害。

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

答案 12 :(得分:0)

当您使用XCode时,不使用脚本语言进行编程就不会那么糟糕。 GDB集成非常好;我主要是一个Perl人,我发现XCode调试器非常好用,非常容易使用。

“修复”功能会让您惊讶于它的实用性。想象一下,在ObjC代码中找到一个错误,修复它,然后告诉调试器继续。它实际上适用于很多情况。

尝试ObjC。你可能会发现你比你想象的要好得多。

答案 13 :(得分:0)

“必须”,嗯...技术上,不。

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

答案 14 :(得分:0)

地狱没有。您可以使用多种语言来制作精美的GUI。这取决于平台通常/最简单的解决方案。在Mac OS X的情况下,Objective-C和AppKit是非常容易使用的选择。但是,我有时会使用REALBasic,这允许跨平台开发(当然还有性能损失)。

所以它真的取决于你想要投入多少工作。如果你想真正做重要的Mac开发,你应该学习Objective-C。但你可以在没有它的情况下过得来....

答案 15 :(得分:0)

没有。虽然Apple强烈推动Cocoa,但仍然支持Carbon。它使用普通的C代替。至于外观漂亮的GUI,只需使用Interface Builder。

但是,我必须说Objective-C是一种很棒的语言。这真的很容易(这是我的第一语言)并且非常强大。

答案 16 :(得分:-2)

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

你从Objective-C获得的Qt中唯一缺少的是那些非HIG兼容的现代Apple应用程序(是的,Aperture和Final Cut,我在看着你!)