多年前,我已经使用C++开发过,但是如今,我主要是一名Java软件工程师。鉴于我拥有iPhone,已经准备好下个月准备购买MacBook,并且通常对使用Mac OS开发MT(使用Objective C)感兴趣,所以我认为我只想问一个问题:下一步是什么?
更具体地说,我应该拿起什么书,并且有些人可以向我指向任何网络资源?我打算购买的一些书籍:
有人熟悉这些标题吗?最后,一旦我踏上了这一旅程,我会对我应该准备的期望的摘要非常感兴趣。作为使用IntelliJ IDEA用Java开发的人,当我继续使用Xcode编写ObjectiveC代码时,我会注意到哪些主要区别? Mac OS桌面开发和iPhone开发之间有什么区别?习惯了Java垃圾收集,我对ObjectiveC垃圾收集/内存管理应该了解些什么。任何其他人想指出的其他语言特定问题?如何建立使用者介面?它是否更接近Swing,即构建与代码进行交互的Visual C++资源文件,还是更像一些会为gui生成代码的borland IDE?
最佳答案
购买了问题中的两本书后,我建议将Mac OS X的Cocoa编程作为学习该语言和Cocoa框架的快速方法,并且可能是开始在Cocoa中生产实际应用程序的最快方法。我强烈推荐它。在Objective-C 2.0中进行编程是一本很棒的引用书,但是如果您已经了解C,那么它并没有太多内容可以教您不能从另一本书中学习。但是,如果您需要在Objective-C中列出所有保留关键字的 list ,那是本书。
可以通过编程方式生成所有用户界面,但是您会发现使用XCode附带的Interface Builder布局用户界面要容易得多。您最终将获得更少的代码。使用绑定(bind),您甚至可以消除与布局界面没有直接关系的代码。详细信息在Mac OS X的Cocoa编程手册中。
我从Java中错过的一件大事是集合API。在Cocoa中,您仅获得NSSet,NSArray和NSDictionary,而Comparable接口(interface)没有类似物。这些类也是不可变的,但是具有可变的版本,例如NSMutableArray。
实际上,我还没有玩过Objective-C 2.0中的Garbage Collection。在Objective-C的早期版本中,内存管理是通过保留,释放和自动释放方法来处理的。创建的对象的保留计数为1。保留的计数增加,释放的计数减少,而自动释放对象则稍微复杂一些。同样, cocoa 编程书对此进行了很好的解释。垃圾回收是一个选项,如果启用了垃圾回收,保留和释放方法以及自动释放方法,则不会执行任何操作。但是,如果要编写供他人使用的库或框架,则应像关闭垃圾回收一样对其进行编程。这样,无论是否启用了垃圾回收,应用程序都可以使用它。
至于Web资源,http://cocoadevcentral.com/是一个不错的网站,提供初学者教程。 http://www.cocoadev.com/上的CocoaDev Wiki包含有关许多主题的详细信息,您通常可以在cocoa-dev邮件列表http://lists.apple.com/mailman/listinfo/cocoa-dev上找到一些有用的信息和相关人员。
iPhone的开发有些不同,并且细节受到NDA的限制。但是,如果您获得了Apple的批准,可以访问iPhone开发人员中心,则Apple提供了一些出色的视频概述,介绍了这些区别,这为您提供了从Mac OS X过渡到iPhone OS X编程所需的文档。