1.1 本书的内容

在计划编写这本有关Objective-C的教程时,我做出了一项重要决定。即在讲述Objective-C的内容之前,假定读者已经知道如何编写C语言程序。我将从使用丰富的例程库(例如Foundation框架和Application Kit框架)的角度讲解这门语言。我还将讲解如何使用一些开发工具(如Mac的Xcode和Interface Builder等)。

选用这种方法有以下几个问题:首先,学习Objective-C之前必须完整地学习C语言,这种说法是错误的。C语言是一门过程性的语言,有很多特性是在使用Objective-C进行程序设计时不必要的,特别是对于初学者。事实上,采用其中的某些特性违反了坚持良好的面向对象的程序设计方法的本质。同样,在学习面向对象编程语言之前,最好不要了解过程性语言的所有细节。这会导致程序员误入歧途,并在养成良好的面向对象的程序设计风格方面,造成错误的导向和思维定式。Objective-C仅仅只是C语言的扩展,并不意味着必须首先学习C语言!

因此,我决定既不首先讲述C,也不事先假定你具备了该语言的知识。相反,我决定采用一种非常规的方式,从面向对象编程的视角出发,将Objective-C和基础的C语言作为一门单独的集成语言来讲解。顾名思义,本书的目的是教你如何使用Objective-C 2.0进行程序设计。这并不表示我会详细介绍可用于开发和调试程序的开发工具,或者讲解如何使用Cocoa开发交互式图形应用。学会如何使用Objective-C编写程序后,所有这些资料都可在其他地方获得。事实上,在具备了如何使用Objective-C进行程序设计的坚实基础后,掌握这些知识是轻而易举的。本书并不假设需要编程经验,即使有,也不会很多。如果你是一名程序设计的初学者,应该可以将Objective-C作为第一门程序设计语言。

本书以示例的方式来讲述Objective-C语言。在介绍这门语言的每个新特性时,通常会提供一个完整的小例子来阐述这一特性。正如一图胜千言一样,一个经过严格筛选的例子也有如此功效。强烈建议运行每个程序(所有这些程序都可在线获得),并比较系统上获得的结果与本书中的结果。这么做,不仅可以学会Objective-C语言及其语法,而且还能熟悉编译和运行Objective-C程序的过程。