美文网首页
初识Runtime

初识Runtime

作者: 这人很懒 | 来源:发表于2018-04-14 15:57 被阅读25次

最近想深入学习一下 runtime 看了比较多的博客和文档,但是好多博主上来就开始讲 runtime 的原理、消息转发机制…… 让我有点蒙,毕竟不是每个人都是有C语言基础的,对于 runtime 的处理机制好多人一下子接受不了。所以我打算从基础的东西一步一步的去深入学习 runtime。现在就开始吧 GO!

runtime 是什么?

Object-C 是基于C的,它为C添加了面向对象的特性。它将很多静态语言在编译和链接时期做的事放到了runtime 运行时来处理,runtime可以进行一些非常底层的操作(用OC无法实现或很难实现),我们平时编写的OC代码在程序运行过程时,其实都转成了runtime的C语言代码。可以说runtime是OC的幕后工作者。

runtime(简称运行时),是一套纯C(C和汇编)写的API。而OC就是运行时机制,也就是在运行时候的一些机制。其中最主要的是消息机制(后边会详细谈到)。

//OC :
[[Person alloc] init];
//runtime :
objc_msgSend(objc_msgSend("Person" , "alloc"), "init")

runtime 可以用来做什么?

1、在程序运行过程中,可以使用runtime 动态的创建一个类(比如说KVO 的底层实现原理)

2、在程序运行过程中,动态地为某个类添加属性/方法。可以用于封装框架(runtime的主要运用方向)更改起来比较自由

3、遍历一个类中所有的成员变量、属性、方法。应用场景比如:字典转model(利用runtime 遍历模型对象的所有属性,根据属性名从字典中读取对应的值,设置到model 的属性中)、自动归档和解档(利用runtime 遍历模型对象的所有属性)

runtime 相关的头文件和函数

runtime 相关的头文件,通过头文件我们可以去查看runtime 相关的各个方法!

#import <objc/message.h>
#import <objc/runtime.h>

runtime 相关的函数:

objc_msgSend : //给对象发送消息
class_copyMethodList : //遍历某个类所有的方法
class_copyIvarList : //遍历某个类所有的成员变量
class_.....

runtime 常用方法

  • Ivar 成员变量
  • Method 成员方法

基本知识也就是这么多

相关文章

  • 初识Runtime

    最近想深入学习一下 runtime 看了比较多的博客和文档,但是好多博主上来就开始讲 runtime 的原理、消息...

  • Runtime初识

    Runtime 运行时,是一套底层的 C 语言 API,其为 iOS 内部的核心之一,我们平时编写的 OC 代码,...

  • 初识 Runtime

  • runtime 初识

    我们随便写一个小程序,代码如下: person类头文件如下, #import@interfacePerson : ...

  • 初识RunTime

    初次接触RunTime,记录下自己的学习心得,为后来者铺平道路,提供一个学习的切入点。 首先简单的介绍下RunTi...

  • Runtime初识

    runtime的使用先导入runtime类 runtime 可以对类操作举个例子先创建一个Person类在.h中声...

  • 初识runtime

    runtime是什么? runtime是一个c和汇编写的动态库,它就像一个小小的系统,将OC和C紧密关联,这个系统...

  • 初识runtime

    大家都知道OC是动态语言,其主要特征就是动态绑定,消息转发。我们在调用NS方法的时候,runtime其实就已经在背...

  • runTime初识

    这里就不说runtime有多牛逼了。直接进入正题。 首先Objective-C是面向对象的,任何类的定义都是对象。...

  • 初识runtime

    算算代码写了一段时间,从去年的6月份到今年的11月.从一个毛头小子,碰见问题只能选择求助,到现在能独立处理问题.我...

网友评论

      本文标题:初识Runtime

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