我在很多年前用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编程书很好地解释了它.垃圾收集是一个选项,如果它已打开,则retain,release和autorelease方法不执行任何操作.但是,如果您正在编写要由其他人使用的库或框架,则应对其进行编程,就像关闭垃圾收集一样.这样,无论是否打开垃圾收集,应用程序都可以使用它.
至于Web资源,http://cocoadevcentral.com/是一个很棒的网站,有初学者教程.http://www.cocoadev.com/上的CocoaDev Wiki 包含许多主题的详细信息,您通常可以在cocoa-dev邮件列表http://lists.apple.com/上找到一些有用的信息和人员.邮差/列表信息/可可-dev的
iPhone开发略有不同,细节受到NDA的限制.但是,如果您获得Apple批准可以访问iPhone开发人员中心,那么Apple就会提供一些有关差异的精彩视频概述,从而为您提供从Mac OS X跳转到iPhone OS X编程所需的文档.