Java Developer在Mac OS上符合Objective-C

我在很多年前用C ++开发过,但是现在我主要是一名Java软件工程师。 鉴于我拥有一部iPhone,我准备在下个月开始使用MacBook,并且我对使用Mac OS开发(使用Objective C)感兴趣,我想我会把这个问题放在那里:下一步是什么?

更具体地说,我应该选择哪些书籍,是否有某些人可以指出的网络资源? 我计划购买的一些书籍:

  • 在Objective-C 2.0中编程
  • 适用于Mac OS X的Cocoa(R)编程(第3版)

有谁熟悉这些头衔? 最后,一旦我踏上这段旅程,我会非常感兴趣地总结一下我应该准备什么。 作为使用IntelliJ IDEA在Java中开发的人,当我转向在Xcode中编写ObjectiveC代码时,我会注意到哪些关键差异? Mac OS桌面开发和iPhone开发之间有什么区别? 习惯于Java垃圾收集,我应该了解ObjectiveC垃圾收集/内存管理。 是否有人想指出的任何其他语言特定问题? 如何构建UI? 它是否更接近Swing,构建代码与之交互的Visual C ++资源文件,还是更像是为guis生成代码的一些borland IDE?

在你的问题中购买了两本书之后,我推荐使用Cocoa Programming for Mac OS X作为学习语言和Cocoa框架的快速方法,并且可能是开始在Cocoa中生成实际应用程序的最快方法。 我强烈推荐它。 Objective-C 2.0中的编程是一本很好的参考书,但是如果你已经知道C,那么它就不会教你不能从另一本书中学到东西。 但是,如果你需要一个Objective-C中所有保留关键字的列表,那就是要去的书。

所有用户界面都可以按步骤生成,但是您会发现使用XCode附带的Interface Builder来设置用户界面要容易得多。 你最终会得到更少的代码。 使用绑定,您甚至可以消除与布局界面无直接关系的代码。 详细信息请参阅Cocoa Programming for Mac OS X一书。

我想念Java的一件大事就是集合API。 在Cocoa中,您只需获得NSSet,NSArray和NSDictionary,并且没有Comparable接口的模拟。 这些类也是不可变的,但是具有可变版本,例如NSMutableArray。

我实际上没有使用Objective-C 2.0中的垃圾收集。 在以前的Objective-C版本中,内存管理由retain,release和autorelease方法处理。 创建的对象的保留计数为1.保留递增的计数,释放递减计数,自动释放对象稍微复杂一些。 再一次,Cocoa编程书很好地解释了它。 垃圾收集是一个选项,如果它打开,保留,释放和自动释放方法什么都不做。 但是,如果您正在编写要由其他人使用的库或框架,则应对其进行编程,就像关闭垃圾收集一样。 这样,无论是否打开垃圾收集,应用程序都可以使用它。

至于Web资源, http://cocoadevcentral.com/是一个很棒的网站,有初学者教程。 http://www.cocoadev.com/上的CocoaDev Wiki包含许多主题的详细信息,您通常可以在cocoa-dev邮件列表http://lists.apple.com/上找到一些有用的信息和人员。 邮差/列表信息/cocoa-dev的

iPhone开发有点不同,细节受到NDA的限制。 但是,如果您获得Apple批准可以访问iPhone开发人员中心,Apple会提供一些有关差异的精彩video概述,从而为您提供从Mac OS X跳转到iPhone OS X编程所需的文档。

获取适用于Mac OS X的Cocoa编程。您的大多数问题都将通过该书回答。 您也可以开始阅读成为XCoder和Cocoa Dev Central 。

iPhone SDK仍然在NDA下,因此您无法找到任何有关它的在线资源,除了Apple提供的资源。

Cocoa UI基于MVC。 您可以使用Interface Builder设计视图,然后将其绑定到模型和控制器。 Objective C是C和Smalltalk的混合物。

另一个选择是jaiPhon,它允许你编写在构建时被翻译成iPhone的java应用程序。

我不知道它是否有用,或者它是商品还是其他什么,但它仍然很有趣。

http://www.jaiphon.com/

还看看这个:

http://www.xmlvm.org/overview/

这个项目试图将用各种源语言编写的程序交叉编译为各种目标语言。 其中一个最初的测试用例是用Java编写程序并在iPhone上运行它们。 在网站上观看video是值得的。

话虽如此,我还没试过。 该项目似乎相当beta,并且他们的SourceForge网站上没有很多活动。

你是否已经熟悉方括号?

以下是我的观点的简要说明 。 我希望这也有帮助。

我认为从IntelliJ跳到Xcode时你会感觉很赤裸。 但这只是从工具的角度来看。 带上额外的衣服(TextMate + FScript)!