第2章 Objective-C程序设计
本章我们将直接切入正题,并演示如何编写第一个Objective-C程序。你现在还不需要使用对象,对象是下一章讨论的主题。希望你能通过本章理解编写程序和编译并运行它的各个步骤。我们重点讲解了在Windows和Macintosh计算机上的这一过程。
首先,举一个十分简单的例子,在屏幕上显示短语“Programming is fun!”的程序。无需大费周折,代码清单2-1显示了用于完成此任务的Objective-C程序。
代码清单2-1
//First program example
import<Foundation/Foundation.h>
int main(int argc, const char*argv[])
{
NSAutoreleasePool*pool=[[NSAutoreleasePool alloc]init];
NSLog(@“Programming is fun!”);
[pool drain];
return 0;
}
2.1 编译并运行程序
在详细解释这个程序之前,先要学习编译和运行此程序的步骤。可以使用Xcode编译并运行程序,或者使用GNU Objective-C编译器在Terminal窗口中编译并运行程序。我们将用这两种方法分别实现这一系列步骤。然后,你可以确定如何处理本书其余部分的程序。
注意这些工具应该预安装在所有使用OS X的Mac机上。如果单独安装OS X,则务必要安装Developer Tools。
2.1.1 使用Xcode
Xcode是一款功能齐全的应用程序,使用它可轻松输入、编译、调试和执行程序。如果想在Mac机上开发应用程序,那么学习使用这个强大的工具是值得的。这里只是介绍入门知识,后面会再次回到Xcode并逐步介绍如何使用它开发图形应用程序。
首先,Xcode位于位于Developer文件夹内一个名称为Applications的子文件夹中。图2-1显示了该工具的图标。
启动Xcode,在File菜单下,选择New Project(参见图2-2)。
图 2-1 Xcode图标
此时出现一个窗口,如图2-3所示。
图 2-2 启动一个新项目
图 2-3 启动一个新项目:选择应用程序类型
在左侧窗格中向下滚动,直至找到Command Line Utility。在右上窗格中,突出显示Foundation Tool,现在窗口应该如图2-4所示。
单击Choose,这会打开新窗口,如图2-5所示。
我们将第一个程序命名为prog1,所以在Save As字段中输入此名称。可以创建一个单独的文件夹来存储所有的项目。在我的系统上,我将本书中使用的项目保存在一个称为ObjC Progs的文件夹中。
图 2-4 启动一个新项目:创建Foundation Tool
图 2-5 Xcode文件列表窗口
单击Save按钮创建新项目,此时显示一个项目窗口,如图2-6所示。注意,如果你已经使用过Xcode或更改了其中的选项,那么显示的窗口可能与此处的稍有不同。
现在可以输入第一个程序了。在右上窗格中选择文件prog1.m,此时应该出现如图2-7所示的Xcode窗口。
Objective-C源文件使用.m作为文件名的最后两个字符(称为扩展名)。表2-1列出了其他常用的文件扩展名。
图 2-6 Xcode prog1项目窗口
图 2-7 文件prog1.m和编辑窗口
返回Xcode项目窗口,窗口的右下侧显示了文件prog1.m并且包含以下代码:
import<Foundation/Foundation.h>
int main(int argc, const char*argv[]){
NSAutoreleasePool*pool=[[NSAutoreleasePool alloc]init];
//insert code here……
NSLog(@“Hello World!”);
[pool drain];
return 0;
}
注意如果看到没有显示文件内容,则必须点击并向上拖动右下窗格,让编辑窗口显示出来。同样,如果以前使用过Xcode,可能会出现此情况。
可在该窗口内编辑文件。Xcode已创建了模板文件供你使用。
修改Edit窗口中显示的程序,使之与代码清单2-1相符。在prog1.m开始添加的行中,首先输入两个斜杠字符(//),这称为注释;稍后会更详细地介绍注释。
现在Edit窗口中的程序应该如下所示:
//First program example
import<Foundation/Foundation.h>
int main(int argc, const char*argv[])
{
NSAutoreleasePool*pool=[[NSAutoreleasePool alloc]init];
NSLog(@“Programming is fun!”);
[pool drain];
return 0;
}
不要担心屏幕上为文本显示的各种颜色。Xcode使用不同的颜色指示值、保留字等内容。现在应该编译并运行第一个程序了,用Xcode的术语来说,称为构建并运行。但是,首先需要保存程序,方法是从File菜单中选择Save。如果在未保存文件的情况下尝试编译并运行程序,Xcode会询问你是否需要保存。
在Build菜单下,可以选择Build或Build and Run。我们选择后者,因为如果构建时不会出现任何错误,则会自动运行此程序。也可点击工具栏中出现的Build and Go图标。
注意Build and Go意味着“构建,然后执行上次最后完成的操作”,这可能是Run、Debug、Run with Shark或Instruments等。首次为项目使用此图标时,Build and Go意味着构建并运行程序,所以此时使用这个操作没有问题。但是一定要知道“Build and Go”与“Build and Run”之间的区别。
如果程序中有错误,在此步骤期间会看到列出的出错消息。如果情况如此,可回到程序中解决错误问题,然后再次重复此过程。解决程序中的所有错误之后,会出现一个新窗口,其中显示prog1-Debugger Console。这个窗口中包含了程序的输出,该内容应该与图2-8所示的类似。如果该窗口没有自动出现,可进入主菜单栏并从Run菜单中选择Console。稍后我们会讨论Console窗口的实际内容。
图 2-8 Xcode Debugger Console窗口
使用Xcode编译并运行第一个程序的这部分过程已经完成了。下面总结一下使用Xcode创建新程序的步骤:
1.启动Xcode应用程序。
2.如果开发新项目,选择File、New Project。
3.为应用程序类型选择Command Line Utility、Foundation Tool,然后点击Choose。
4.选择项目名称,还可以选择在那个目录中存储项目文件,然后点击Save。
5.在右上窗格中,会看到文件prog1.m(或者是你为项目起的其他名称,后面是.m)。突出显示该文件。在该窗口下面出现的编辑窗口中输入你的程序。
6.选择File、Save,保存已完成的更改。
7.选择Build、Build and Run,或者点击Build and Go按钮构建并运行程序。
8.如果出现任何编译器错误或者输出内容不符合要求,对程序进行所需的更改并重复执行步骤6和7。