先学习Leopard的Cocoa再学习iPhone的Cocoa Touch有意义吗?

5

实际上,我并不太关心Mac OS X的开发。我只想做iPod Touch和iPhone的开发。不过,我已经开始学习Cocoa和Objective-C了。但是,似乎Cocoa和Cocoa Touch之间有很多差异,所以我在想我是否正在浪费时间。我应该直接跳到iPhone相关主题吗?

7个回答

10

虽然有很多重叠部分,但如果你学习的目的是为了进行iPhone编程,那么请直接学习iPhone编程。

顺便一提,如果你将来有这样的愿望,学习了iPhone编程后也能更容易地学习Mac应用程序编程。


2
这种方法的另一个优点是iPhone编程基本上是Mac编程的子集。反过来则需要你弄清楚哪些已经被删除了。 - Andy
@Andy:不完全正确。与Mac Cocoa相比,iPhone上的某些API已经过清理。您可以看到缺乏向后兼容性问题使得苹果公司重新考虑(或至少重命名)了一些东西。结果是您将会在两个方向上遇到一些小差异。 - Kornel

9
我认为您可以选择 Cocoa-Cocoa Touch 或 Cocoa Touch-Cocoa 任意一种,仍然能够很好地掌握编写任一平台的程序所需的知识。几年前我尝试在 Mac 上进行 Cocoa 开发,但感到相当困惑。最终我决定学习 iPhone 编程,并阅读了 Beginning iPhone Development: Exploring the iPhone SDK 这本书,在几周内完成了学习,现在对这方面的知识有了更深刻的理解。实际上,只需要一个好的 Mac 编程说明就足够了。我相当有信心,现在我可以用更少的努力学习普通的 Cocoa 编程。如果我从普通的 Cocoa 编程开始学起,我相当有信心也能轻松掌握 iPhone 编程。两个平台之间存在差异,但它们之间有许多(非常酷)的相似之处。
另外,如果您真的对 iPhone 开发感兴趣,我强烈推荐那本书。它物有所值。

7

2
这是一本不错的书,但对于这个目的来说,并不一定比《Beginning iPhone Development》更好。 - Rog
我目前正在阅读这两本书,但我认为现在我会专注于iPhone。Aaron关于内存管理的章节让我感到困惑,而且他不喜欢使用属性,而这在LaMarche的书中被广泛使用。虽然是小事情,但它们足以让我专注于其中一本书。 - kirk.burleson

3

Cocoa Touch和Cocoa之间的一个区别在于内存管理。

如果你是第一次学习Objective-C(或可能是任何基于C的语言),我建议你从Cocoa Touch开始学起。

我的理由是iPhone不支持自动垃圾回收,你可能会发现先学习(更困难?当然不那么自动化)的方式更容易,然后当你转向OS X开发时,你会欣赏到OS X平台给你的捷径。

如果你最初在Leopard上学习Cocoa开发,你可能会对iPhone上似乎更原始的内存管理感到沮丧。

两者非常相似。

总之,如果你想学习为iPhone编程,请直接跳入iPhone。Mac OS X开发不是必需的,只是一种非常相似的技能集。


3

虽然两者有相似之处,但如果目标是iPhone开发,最好从该平台开始学习,然后再升级到Mac。在UI框架和IB能够做的方面都有更多的内容,因此您可能会习惯于一些在iPhone上不存在或以不同方式完成的系统方面。

NS基础类大致相同,但即使在那里也存在差异。

此外,请注意模拟器将编译并运行Mac代码,但这些代码在手机本身上无法编译或运行。使用文档时,请始终将其重点放在iPhone SDK部分。


你的意思是“在使用文档时,要始终将它们集中在iPhone SDK部分”是吗? - Thanks
在文档窗口的左侧,您可以选择不同的文档集。您可以查看Mac OS集或iPhone集(实际上有多个版本),或者我认为是全部。默认情况下,我认为您正在查看OS X集,其中包含您无法在手机上使用的元素。 - Kendall Helmstetter Gelner

1

我曾经遇到过和你一样的问题,尽管我最初的重点更多地放在Mac开发上,iPhone是后来才出现的。虽然我还不是一个专业的Cocoa编码人员,但事情正在迅速改善。我发现我在Mac上学到的有关Cocoa的知识在iPhone上非常有用;相比于我在Mac上第一步学习Cocoa时,学习iPhone开发肯定要快得多...

实际上,我发现这两种技能都很有用。我正在制作一个iPhone游戏,但它使用的数据集(实际的谜题)是由我为Mac开发的一个小型Cocoa应用程序创建的。您不想学习Mac开发的具体原因是什么?您的游戏不需要额外的开发/设计工具吗?

(Mac应用程序的屏幕截图:http://www.qixis.com/images/edit16-screenshot.png


1
我曾经教过Mac开发者和iPhone开发者,我的经验是一般来说最好先学习Mac,特别是因为你可以使用Cocoa Programming for Mac OS X获得坚实的Cocoa基础,这仍然是学习Cocoa模式的最佳书籍。到目前为止,我还没有找到一本好的iPhone书籍,可以教授你需要了解的关键问题,并将Cocoa/Touch编程与Java、.NET和其他系统区分开来。最近我写了几篇文章,可能会在你思考这个问题时有所帮助:

iPhone 课程大纲

iPhone Developer's Cookbook 评测


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接