使用C和Objective-C入门指南

6
我最终希望能够使用Objective-C编写OS X和可能的iPhone程序。我没有任何直接使用C的经验,而是来自Web编程背景。我比C和Objective-C更熟悉Java语法。
我只是想寻求如何开始的建议。看起来我需要从C开始(我还没有一台强大到足以进行编程的Mac电脑,因此在Windows平台上从C开始会很好(关于编程环境的信息也会很有帮助,我习惯于使用eclipse))。我只是在寻找书籍推荐、在线教程或任何其他指导意见。请记住,我的最终目标是与Objective-C一起工作,因此在学习C时需要注意什么,需要注意什么等等。谢谢您的任何意见。
更新:我认为我需要先学习C的原因是,我迄今遇到的大多数Objective-C教程都假定你已经了解C语法,而我并没有完全掌握。是否有更好的教程适合我呢?

我很好奇你说你没有一台足够强大的Mac来进行编程。那么你用的是什么型号的Mac呢?我的相对较旧的Mini可以支持编程,虽然它不是一个理想的开发机器。 - David Thornley
我有一台12英寸的MacBook,但我觉得用它来开发可能不太明智。在进行任何真正需要处理器大量运算的操作时,它似乎会有些卡顿。虽然我相信它能够胜任,但我认为这不是一个好主意。 - Ryan Guill
1
处理器足够好了,应该不会有问题。延迟几乎肯定是由以下两个原因之一或两者共同导致的:1. 集成显卡——任何图形密集型操作都会受到影响。2. 内存——如果你只有默认的1GB或更少内存,请确保将其最大化(应该是2或4GB)。 - philsquared
9个回答

9
我不完全同意unwind的说法:“C和Objective-C是不同的语言”。Objective-C是C的严格超集。
当然他知道这一点 - 他的观点是你不需要在进入Objective-C之前完全掌握C。我赞同这一点(并希望已经澄清了)。
但我认为值得先学习一些C的基础知识,因为大多数介绍Objective-C的文本都会假设你有基本的知识。
我自己没有任何推荐,但可能大部分基于互联网的教程都足以达到这个目的(记住,你现在并不想掌握它)。如果你想认真对待它,那么K&R的《C程序设计语言》是经典文本。
当你能够用C编写一些基本的“hello world”程序,并理解类型系统、指针等内容时,就可以拿起Aaron Hillegass的《Cocoa Programming for Mac OS X》。这是一本关于Cocoa的书,顺便涵盖了Objective-C,但却是最好的语言阐述之一。它会假设你正在Mac上编码(毕竟是在Cocoa的背景下),你可能可以使用Windows上的GCC来跟随纯语言部分,但我不建议这样做。
如果你最终要在Mac上工作,那么最好在这个阶段开始学习,我认为。你说你没有一台“强大到可以进行编程”的Mac,但任何能运行OS X的机器都足够让你入门了。

4
如果你懂Java,那么学习Objective-C会很容易(Java受到了Objective-C的很大影响)。苹果有很好的文档,你可以从这里开始。我认为在学习Objective-C之前不需要学习C语言(抱歉,Joel)。
如果你安装了gcc,也可以在Windows上使用Objective-C。此外,还可以查看cocotron

Cocotron是一个开源项目,旨在实现与Apple公司的Cocoa文档描述类似的跨平台Objective-C API。其中包括AppKit、Foundation、Objective-C运行时和支持API,如CoreGraphics和CoreFoundation。

随着iPhone开发的热度,现在有数十本Objective-C书籍。不确定它们有多好,但我建议阅读经典著作《Cocoa Programming from Mac OSX》 by Aaron Hillegass。

3

《Objective-C编程》是Stephen Kochan所著,适合没有编程经验的人学习,但如果你有编程经验也不会阻碍你的学习,并将Objective-C与C作为一个完整的包进行介绍。我读了Kochan的前半部分(后半部分涉及Cocoa),现在正在阅读Aaron Hillegass的《Mac OS X Cocoa编程(第三版)》,而Kochan的阅读对我帮助很大。这两本书是一个“一二连击”,可以让你迅速入门。

在学习过程中最好随时准备一份C和Objective-C参考资料,因为就我目前所见,苹果公司在XCode中提供的C文档非常糟糕。K&R的C语言教材就像C语言百科全书一样,不适合所有人。我一般会在网上搜索参考资料,因为C语言非常普遍,所以很容易找到需要的内容。

在找到最适合自己的书之前,你可能需要读几本书,但是对于Objective-C和Cocoa,选择Kochan和Hillegass这两本书肯定没错。当你完成Hillegass的前几章时,你就会想要(并且能够)开始自己写一些东西了。


2


1

同意其他人的看法,我发现Cocoa Programming for Mac OSX - Hillegass是Objective-C、Cocoa框架和整个苹果方式的很好的入门。

你也可以在任何Linux或Windows上运行Objective-C,尽管当然你不会有访问所有苹果库(例如NS)的权限。这些框架实际上是Objective-C的全部重点,也是它仍然存在的真正原因,因为C++和C#后来出现,而且更多或少是围绕自己设计的语言(与Objective-C相反,它是C的严格超集)。

除了指针之外,我认为你可以不学习C的所有复杂和接近底层的方面,尽管任何你能消化的C都有所帮助。


1

我认为先学习C语言会更好。一定要以它的本质来学习:结构化的机器语言。

当你感到舒适时(不需要真正掌握它),再去学习Objective C,其中你将重新发现一些熟悉的Java东西,但是了解C架构将使它们相似但不等价的本质更加明显。

很重要的一点是不要用你已知的知识作为新知识的“隐喻”来学习一门语言。永远试图假装你之前什么都不知道。


1

我不知道您所说的强大到足以进行编程的Mac是什么意思(任何Mac都应该可以),但请尽快为自己找到至少略微有用的开发系统。(您可能已经拥有随Mac一起附带的开发系统光盘,或者您也可以从Apple下载。)

您越早让Xcode工作,您就会越快熟悉它。


1

我最近开始学习Iphone编程,并尝试了许多不同的书籍,直到我找到了这些对我最有帮助的书籍(我也强烈建议购买Mac,因为Xcode是编写Iphone代码的最佳选择)

需要注意的是,所有这些书都有相同的作者,因此可追溯性非常好!这些书彼此之间有交叉引用,真的很有帮助。

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