小组iOS

熟悉 第一篇 Objective-C

介绍: Objective-C 通过一套全新的语法,在C语言基础上添加了面向对象特征。

第一条: 了解 Objective-C语言的起源

1、消息结构

  • 与大多数面向对象语言不通的是,Objective-C使用“消息结构”而非“函数调用”。Objective-C语言是由 Smalltalk 演化而来的,后者是消息语言的鼻祖。在语法上得区别是使用[]来“调用”方法,确切的说是发送消息。
  • 关键区别在于: 使用消息结构的语言,其在运行时执行的代码由运行环境来决定;而使用函数调用的语言,则由编译器决定。
  • 函数调用: 当代码中调用的函数是多态的,那么在运行时就要按照“虚方法表”来查找到底执行哪个函数实现。
  • 消息结构: 而采用消息结构的语言,不论是否多态,总是在运行时才会去查找所要执行的方法。这个过程叫做“动态绑定”。

2、运行期组件

    Objecttive-C 的重要工作都是由”运行期组件”而非编译器来完成。使用 Objective-C的面向对象特性所需的全部数据结构及函数都在运行组件里面。举例来说,运行组件中含有全部内存管理方法。运行组件本质上就是一种与开发者所编代码相链接的”动态库”, 其代码能把开发者编写的所有程序粘合起来。这样的话,只需要更新运行期组件,即可提醒应用程序性能。而那种许多工作都在”编译期”完成的语言,若想获得类似的性能提升,则要重新编译应用程序代码。

3、Objective-C 和 C

  • Objective-C是C的”超集”, 所以C语言中的所有功能在编写Objective-C代码时依然适用。因此,必须同时掌握C与Objective-C这两门语言的核心概念,方能写出搞笑的Objective-C代码。
  • C语言中的堆栈a. 分配在堆中的内存必须直接管理,而分配在栈上用于保存变量的内存会再其栈帧弹出时自动清理b. Objective-C将堆内存管理抽象处理啊。不需要用malloc 及free来分配或是否对象所占内存。Objective-C运行期环境把这部分工作抽象为一套内存管理架构,名叫”引用计数器”
  • 结构体和对象整个系统框架都在适用这个种结构体, 因为如果改用 Objective-C对象来做的话, 性能会受影响。与创建结构体相比,创建对象还需要额外开销,例如分配及释放堆内存等。如果只需要保存 int、float、double、char等”非都系类型”, 那么通常适用CGRect这种结构体就可以了。

4、要点

  • Objective-C为C语言添加了面向对象特性, 是其超集。
  • Objective-C使用动态绑定的消息结构, 也就是说, 在运行时才会检查对象类型。接收一条消息后, 究竟执行何种代码, 由运行期环境而废编译器来决定。
  • 理解C语言的核心概念有主意写好Objective-C 程序。 尤其要掌握内存模型与指针。
4 1 收藏


直接登录
最新评论