重新认识一遍runtime

前一段空闲时间看了两个常用的第三方库,也是项目中一直在用的 SDWebImage和MJExtension,其中有一部分很重要的代码用到了runtime,个人是不喜欢在项目中使用runtime的,但是不能否定其在解决一些需求上的的优越性,故而重新梳理一下,过几天准备读一下YYModel,其中也少不了runtime,最近也看了几篇关于runtime的文章,手敲一下更加能加深记忆,缘起。

首先来认识一下runtime;

 

对于runtime每个人有每个人的理解,个人认为脑袋中有个潜意识,它是什么,它是干什么的,他能干些什么;

Objective-C是动态语言,它将很多静态语言在编译和链接时做的事放到了运行时,这个运行时系统就是runtime。

静态语言是在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型。 
例如:C++、Java、Delphi、C#等。(查的资料)

 

就想我们写代码一样可以将runtime想象成一个很牛逼的底层库,他能干很多事情,比如:

runtime把对象用C语言的结构体来表示,方法用C语言的函数来表示。这些结构体和函数被runtime封装后,我们就可以在程序运行的时候,对类/对象/方法进行操作。

寻找方法的最终执行:当执行[receiver message]的时候,相当于向receiver发送一条消息message。runtime会根据reveiver能否处理这条message,从而做出相应操作。

 

下面介绍一些与runtime相关的东西:

指针:在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。(出自百度百科哈哈!)

oc被认为是c的高级封装,拥有面向对面的特质,so指针这一c的最大脸肯定是少不了的.

isa指针:OC中,类和类的实例在本质上没有区别,都是对象,任何对象都有isa指针,它指向类或元类 。

在Objective-C中,所有的类其实也是一个对象,都能相应对应的类方法。

 

 

 

 

posted @ 2017-12-19 17:54  iOS贝吉塔星人  阅读(108)  评论(0)    收藏  举报