美文网首页
Runtime随笔(一) 消息机制

Runtime随笔(一) 消息机制

作者: JustCompile | 来源:发表于2017-07-23 11:35 被阅读0次

最近面试,总是被问到runtime,又或者问category能否添加属性,虽然之前接触过runtime,但只是简单的拿别人的文件直接copy到工程里面使用,比如“UIbutton+block”,“MJRrefresh”,json解析,等等。。。都没有系统的学习。

正好这个星期,一个朋友问我怎么样在项目里解决“被键盘遮住后视图上移”,并且是全局的,我第一反应就是category,然后又想了一下肯定要用到runtime,因为要给category添加属性,于是乎,我就系统的学习了一下runtime,这是第一篇,参考案例:

Runtime学习与使用(一):为UITextField添加类目实现被键盘遮住后视图上移

Objective-C Method Swizzling 的最佳实践

Objective-C Runtime 消息机制 - 代码背后发生的事情

其实这两篇文章已经把runtime讲解的非常清楚了,首先讲讲什么是ios runtime:

通俗的讲,我自己的理解,就是c语言的实现,其实我们写的oc代码都会被编译器转换成c语言代码,最直接的说明就是你使用clang “clang -rewrite-objc main.m” 编译一个.m文件,得到的结果是

然后打开文件,拉倒最后一行,可以看到

这是什么,这就编译后的代码,抽几个方法来读一下

objc_msgSend:字面意思是“发送消息”,那是干什么的呢,其实我们的oc进行方法的调用等等,其实就是消息的发送实现的,这就是Objective-C Runtime 消息机制。之前我也不是很理解什么叫做消息机制,怎么来通消息的,下面是重点:

runtime中类的定义

runtime中方法的定义

所以其实用c来解释就是一个叫obj_class的结构体在自己的方法列表“objc_method_list”寻找一个method_name叫“sayHello”的方法,然后调用这个“sayHello”的IMP,就是实现,最终我们就完成了这个方法的调用,未完待续...

相关文章

  • Runtime那些事儿(消息机制)

    Runtime那些事儿(消息机制) Runtime那些事儿(消息机制)

  • Runtime随笔(一) 消息机制

    最近面试,总是被问到runtime,又或者问category能否添加属性,虽然之前接触过runtime,但只是简单...

  • Runtime 的应用

    前面我们说到:Runtime 消息传递机制Runtime 消息转发机制Runtime 交换方法今天我们来谈谈Run...

  • 深入浅出Runtime

    Runtime运行时 目录 一、runtime 简介二、消息机制<了解>2.1 消息机制原理2.2 消息调用流程三...

  • iOS runtime

    runtime 是 oc 语音的基础首先runtime的核心机制是消息机制 也就是oc的消息机制首先oc的消息机制...

  • iOS - Runtime - 概念和方法交换

    runtime的概述runtime的相关概念runtime消息机制消息传递动态方法解析消息转发runtime的作用...

  • runtime系列文章总结

    《iOS Runtime详解(消息机制,类元对象,缓存机制,消息转发)》《消息转发机制与Aspects源码解析》《...

  • iOS面试-Runtime简介

    本文主要介绍runtime的五点 Runtime简介 Runtime(消息机制) Runtime方法调用流程 Ru...

  • iOS消息转发机制

    消息转发机制: 消息转发机制是相对于消息传递机制而言的。 1、消息(传递)机制 RunTime简称运行时。就是系统...

  • 【iOS】浅谈 Runtime 和 Runloop

    Runtime Runtime 运行时机制, 其中最主要的是消息机制 Runtime是一套底层的C语言API(包含...

网友评论

      本文标题:Runtime随笔(一) 消息机制

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