iOS 底层 OC、C 、C 的关系 - AlvinSunny/OC-TheUnderlying GitHub Wiki
想了解 oc 和 c、c++ 的关系,首先需要知道计算机语言的分类:
分类方式有两种:
第一种:按照类型划分
-
高级语言和低级语言
-
动态类型和静态类型
-
强制类型和弱类型
-
编译型,解释型,半编译半解释
-
面向对象型和面向过程型
第二种:按照计算机语言的发展的三个阶段划分
机器语言、汇编语言、高级语言。
在这里仅了解第一种即可:如机器码(machine language)、汇编(伪机器语言)和符号语言是属于低级语言;C、C++ 、C#、pascal、python、lisp、prolog、FoxPro、Objective-C 、Swift 、java、php等是属于高级语言。如想了解其他几种分类的语言可以参考计算机语言的几种分类;另如果想了解计算机语言的发展史-->计算机语言发展简史。
图中的Objective-C版本写错了,应该是2.0
由上图可见Objective-C 是由C语言发展而来的,在我们平时编写的Objective-C 代码,底层是转化为Runtime的API实现的。
流程是:Objective-C代码在Runtime时转化为C语言API 函数调用;接着再通过编译器编译成伪机器码;最終转化成机器码来调用硬件执行。
注:文中提到Runtime,Runtime中文解释为运行时;是iOS提供的一套C语言API,是Objective-C 的底层实现。
一个很基础的问题:计算机语言和生活中交流用到的语言最大的区别是什么 ?😁😁
计算机语言要求语法必须明确,不能够似是而非;即不允许有二义性 !
生活中的语言可以有多种语义;即一词多义!