iOS RunTime之一:简介

作者: s_在路上 | 来源:发表于2016-06-15 17:10 被阅读1030次

Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理。Objective-C是基于C语言加入了面向对象特性和消息转发机制的动态语言,这意味着它不仅需要一个编译器,还需要Runtime系统来动态创建类和对象,执行编译的代码,进行消息发送和转发。Objective-CRuntime其实是一个Runtime库,它基本上是用C和汇编写的,这个库使得C语言有了面向对象的能力。

下面通过分析Apple开源的Runtime代码来深入理解Objective-CRuntime机制。

记得初学Objective-C时,把[object doSomething]当成一个简单的方法调用,而无视了“发送消息”这句话的深刻含义。后来对Runtime的理解慢慢增加了,逐渐明白了[object doSomething]的含义。
当执行[object doSomething]会被编译器转化为:

objc_msgSend(receiver, selector)

如果消息含有参数,则为:

objc_msgSend(receiver, selector, arg1, arg2, ...)

如果消息的接收者能够找到对应的selector,那么就相当于直接执行了接收者这个对象的特定方法;否则,消息要么被转发,或是临时向接收者动态添加这个selector对应的实现内容,要么就干脆玩完崩溃掉。

现在可以看出[receiver message]真的不是一个简简单单的方法调用。因为这只是在编译阶段确定了要向接收者发送message这条消息,而receive将要如何响应这条消息,那就要看运行时发生的情况来决定了。

相关文章

  • iOS Runtime

    Runtime 简介: Runtime 又叫运行时,是一套底层的 C 语言 API,其为 iOS 内部的核心之一,...

  • iOS RunTime之一:简介

    Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理。Objecti...

  • iOS runtime整理

    runtime简介 Runtime 又叫运行时,是一套底层的 C 语言 API,是 iOS 系统的核心之一。开发者...

  • iOS Objective-C 方法的本质

    1.Runtime简介 1.1 Runtime Runtime官方文档 作为一名iOS开发人员,说去Runtime...

  • iOS面试基础知识 (一)

    作者:akon 原文地址: 一、Runtime原理 Runtime是iOS核心运行机制之一,iOS App加载库、...

  • Runtime

    简介 iOS开发-Runtime详解(简书) 简介 Runtime 又叫运行时,是一套底层的 C 语言 API,其...

  • Runtime要点

    Runtime原理 Runtime是iOS核心运行机制之一,iOS App加载库、加载类、执行方法调用,全靠Run...

  • iOS基础知识 (一)

    一、Runtime原理 Runtime是iOS核心运行机制之一,iOS App加载库、加载类、执行方法调用,全靠R...

  • iOS开发-Runtime详解(简书)

    简介 Runtime 又叫运行时,是一套底层的 C 语言 API,其为 iOS 内部的核心之一,我们平时编写的 O...

  • iOS开发-Runtime详解

    简介 Runtime 又叫运行时,是一套底层的 C 语言 API,其为 iOS 内部的核心之一,我们平时编写的 O...

网友评论

    本文标题:iOS RunTime之一:简介

    本文链接:https://www.haomeiwen.com/subject/ithpdttx.html