Getting to know Objective-C
(初识Objective-C
)
The origin of Objective-C language Objective-C
语言的起源
20世纪80年代初,受SmallTalk
的启发,Brad Cox
在当时最流行的C语言基础上,增加了一些微妙但意义重大的新特性,如消息机制(message)和面向对象(Object Oriented Programming)。增加的这部分作为一个集合(C语言的扩展集),统称为Objective-C
。
与大多数人的理解不同,我习惯把这个“C语言的扩展集”单独称为“Objective-C”(这样的话,
Objective-C
与C语言并没有任何交集),而不是将其与C语言作为一个整体合称为Objective-C
。那样理解的话,Objective-C
是C语言的超集(superset)。
Grammatical characteristics 语法特点
其语法中频发使用方括号,且为了易读性而不吝于写出极长的方法名,这在其它语言的使用者看来通常会显得很冗长。
Messaging Structure 消息结构
与“函数调用”(function calling)相对应
// messaging structure
Object *obj = [Object new];
[obj performWith: parameter1 and: parameter2];
Dynamic Binding 动态绑定
编译器不关心接收消息的对象是何种类型,直到运行时(runtime)才会去处理相关问题,其过程被称为“动态绑定”。
Runtime System 运行时系统
某些书上也会将此部分称为“运行期组件”(rumtime component)。本质是编写Objective-C
代码所基于的必不可少的动态链接库,使用Objective-C
的OOP特性所需的全部基础数据结构及函数都定义与此,顾缺少此动态库,OC程序必然无法链接和编译成功。
正因为有了运行时系统,OC才会被视为一门动态语言。与其它动态语言类比之下,Runtime System
相当于 Java 使用的虚拟机 JVM (Java Virtual Machine),C#使用的“公共语言运行时”(Common Language Rumtime)。在一定程度上,Objective-C Runtime System
类似于OC语言的操作系统,OC就是基于该系统来工作。