OBJECTIVE-C入门(1) HELLO WORLD
面向 对象的C语言
提及面向对象的语言,大多数Windows下的开发者会首先想到的是C++,C#或者Java。但是,如果你首先想到的是Objective-C,那么你应该是一位Mac OS下的开发者,这个现代计算机系统中,最多应用Objective-C的Apple公司Mac OS X。
Object-C和C++
Object-C是在C语言的基础上,吸收了Smalltalk的面向对象成分创造出的,这与大多数以Java为基础的面向对象语言非常的不同。
而且,与其他面向对象语言隐藏类在内存上的构造不同的是,Object-C用C语言来实现类,也就是说,和现代面向对象的思维方式相反,不是在语言中重新引进面向对象的元素,而是借助设计模式,在C语言中,不追加新元素的前提下实现面向对象的思想。举例来说,C++或者Java语言本身中就包含有类这个面向对象的概念,更通俗的说法是class这个关键字就是语言的一个组成部分,而在Object-C中,类的定义要放到头文件中进行,其本质上就是一个用typedef隐藏过的构造体。所以,Object-C和C语言有很高的亲和性,这会使熟悉Java的开发者非常难以接受,然而对熟悉C语言和设计模式的开发者,却是一个好机会。
Object-C的编译环境
如果系统是Mac OS X的话,安装附属的开发环境后立刻就能开始使用Objective-C 。而Linux系统下的GCC或者专门应用于Windows的GCC也能编译Objective-C。
新的预处理命令
Objective-C是C语言的扩张,C语言是Objective-C的子集,所以C语言不做任何修改就能在Objective-C环境下运行。更准确的说,Objective-C不是C语言本身的扩张,而是对编译器的扩张,编译器最终会将Objective-C翻译成C语言,而两者编译的结果代码也会是完全一样。在Objective-C中新追加的关键字,也不过是在头文件中用#define或者typedef的重新定义而已。
所以,为了正确运行Objective-C,必须首先引进特定的头文件,Objective-C中新引进的关键字和类型,都定义在objc/objc.h这个头文件中。但是请记住,objc/objc.h中定义的机能仅仅是支持Objective-C正常运行最小集合。而这个头文件随编译器的不同而有所不同,在GCC编译器中为objc/Object.h,在Mac OS的Cococa中则为Foundation/NSObject.h。在Object-C中不依存编译器的头文件记述方式为objc/objc.h。
引用头文件的方式,在Object-C中增加了#import这个预处理命令。#import除了不会重复引进已经存在的文件之外(重复引用在C语言中是一个令人头疼的问题),用法和功能都和#include 一样。
#import <头文件>
#import "头文件"
如果你仍然坚持使用#include来引进头文件的话,请不要忘了处理重复引用的问题。
另外,和以往的C语言一样,为了使用printf()等标准函数,还需要引用stdio.h头文件,还需要说明的是,Objective-C源程序文件的扩展名不是.c而是.m。
#import <stdio.h>
#import <objc/Object.h>
int main() {
printf("Hello World \n");
printf("Hello Wordl Too \n");
return 0;
}
从上面的程序可以看出,Objective-C和C语言几乎完全一样,事实上Objective-C不是与C语言类似,而是和C语言具有完全的互换性,或者说本质上就是C语言。
注释方式上,除了可以使用C语言的/* */之外,Objective-C又增加了 //这种单行的注释方式。