Objective-C不是一个复杂的语言,虽然有些术语比较怪异,但是它用起来还是比较简单的。
Objective-C中的面向对象编程(OO)
对象Objects
对象必然是OO中最基本的元素,一个对象可以接收消息并按照消息来改变自己的状态。
一个对象的实例包含变量和方法。变量表示对象状态,方法表示对象的行为。
类Classes
所有同种类型的对象可以被称为同一个类的成员。如果有一个矩形的类,那么所有的矩形都术语这个类,而这个类则定义了所有的实例变量和方法。
类定义了自己,但是并不创建对象,它表现的更像是其他对象的模板。当一个对象被创建了之后就可以说一个类的实例存在了。同一个类的所有实例拥有相同的数据结构(变量)和方法。
继承Inheritance
在定义一个新的类的时候可以继承一个已经存在的类,这个类继承了他的父类的数据结构和方法。同时你可以自由的添加新的变量和方法或重写父类的方法。
多态Polymorphism
就像Java里面的重载,同一个父类的同一个方法,在子类里可以有不同的实现。
封装Encapsulation
封装有利于程序员在使用对象的时候关注它的行为而不是实现。同时也有利于修改实现而不影响使用它的程序。
动态类型绑定Dynamic Typing and Binding
在OO的世界里,一个对象的所属的类可以在运行时决定。在运行时绑定一个消息到一个特定的方法被称为动态绑定。
1.2 什么是Objective-C?
Objective-C在ANSI C的基础上加入了一些关键字和编译指令,以使其达到对面向对象的支持。libobjc是其关键作用的一个运行时用到的库.
因为Objective-C是ANSI C的扩展,你可以自由的调用C的代码。
Objective-C的代码看上去也很像C的代码,因为它也用main方法。
#include <stdio.h>
#include <objc/objc.h>
int main (void)
{
/* Objective C and C code */
return(0);
}
Objective-C的源代码用标准的GNU gcc 编译器. 这个编译器通过后缀.m来识别Objective-C 文件,.c来识别C文件,.h来识别头文件。
比如这个命令$gcc -o testfile testfile.m –lobjc会把Objective-C的代码testfile.m编译成一个可运行的文件testfile.“-lobjc”这个参数表示要把Objective-C的程序连接到动态运行库上. (在 GNU/Linux你也许还需要-lpthreads参数)
GNUstep make工具提供了另外一个简单的方法来编译大型项目