我的第一个Objectite-C程序

     编写一个能够输出“Hello world!”的程序是学习一门新编程语言最经典的入门之路了。让我们从这个简单的程序开始Objective-C的征途吧。 现在需要找一个文本编辑程序来编写这段代码。如果你有Mac,你可以使用vi或者emacs;如果只有Windows,那就用记事本(notepad)。完整的代码如下:

 

1 #import<Foundation/Foundation.h>
2
3  int main(int argc, const char *argv[])
4 {
5 NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
6
7 NSLog(@"Holle Tiwer, This is Frist Objective-C!");
8
9 [pool drain];
10 return 0;
11 }

     如果你了解C语言,你也许能看明白大部分,但会对第7行和第9行感到不解。主要是不理解“[]”是什么意思。这里只简单解释一下,要真正弄清楚还得学习Objective-C面向对象的部分。“[]”表示向一个类或一个对象发送一条消息或者说是调用一个类或一个对象的方法。NSAutoreleasePool是一个负责进行内存管理的类。“[[NSAutoreleasePoolalloc] init]”的意思是分配一个内存管理类的对象并初始化它。“[pool drain]”的意思是清空这个内存管理对象中的内存。

 

    第3行的#import指令与C语言中的#include指令的作用类似,是引用头文件。但#import指令更为强大。

还有就是对第8行字符串“"Hello world!"”前面的“@”不理解。“@”的意思是这个“"Hello world!"”是一个字符串常量对象,而不是一个普通的字符串。

 

如果没有学过C语言,也不必担心,阅读本文剩余的部分,你就能理解这段程序了。

 

    这个程序的第1行“// Hello world in Objective-C”是注释。注释是不可执行的代码,而只是为阅读程序源代码的人提供与程序有关的信息。比如谁编写了这个程序,程序的主要功能和实现方法等。注释在编译时被忽略,最终的可执行程序里也没有任何注释会被留下来。

 

     第3行“#import<Foundation/Foundation.h>”是预编译指令。所谓预编译指令,代表着在编译器编译源代码之前由预编译器执行的一些操作。预编译指令为编译器编译源代码提供必要的信息,对源代码进行必要的整理。这里使用的预编译指令的含义是源代码使用了一些类型是在“Foundation/Foundation.h”这个头文件中定义的,编译器在编译源代码时应该参考这个头文件以获取相关类型的信息。

 

第5~11行定义了一个函数。函数是一个程序块。函数的名字叫main。这是一个特殊的函数,是程序执行的进入点和退出点。main前面的int是函数的返回值的类型。main后面()中的部分是main函数的参数,参数由函数的调用方提供,为函数执行提供必要的信息。每个参数都要指定参数值的类型和名称,多个参数用“,”分开。{}中的部分是函数体,是函数的功能实现部分。

 

第8行“NSLog(@"HelloWorld!");”是一个函数调用语句。NSLog接受一个字符串,并将该字符串打印到屏幕上。这正是我们这个Hello world程序的主要目标。请注意语句是以“;”结束的,这是语法要求的:语句以分号结束。

 

第10行“return 0;”是返回语句。“0”是返回值。如果没有返回值则直接使用“return;”。程序执行返回语句之后,该函数的调用就结束了。如果main函数调用结束,那么程序就会退出。

 

posted @ 2010-11-08 10:11  wgw8299  阅读(181)  评论(0)    收藏  举报