iOS开发-运行时机制runtime(一)

写在前面:刚接触iOS开发时,runtime我们听得很多,感觉很高大上,却又说不出个所以然,今天,我把我自己知道的分享给大家。

首先,说OC是运行时机制,那肯定是有一个比较对象。我们拿C语言和OC作对比。C语言写的代码,在编译的时候就已经决定了某一段代码在运行时就会调用某一个函数;而OC则不同,OC在编译的时候只会检查是否已经定义一个方法,没有实现也不会报错,但是,在运行时,执行某一个只定义未实现的方法就会崩溃。所以说OC是运行时机制。

OC中的方法调用:
任何方法调用本质都是发送一个消息,用runtime发送消息.OC底层就是通过runtime实现的。

方法调用的流程:
OC中的方法可分为类方法和对象方法,对象方法可以再类对象的方法列表中找到, 类方法可以在元类的方法列表中找到。而所有方法都存在于内存的方法区。在这里简单说明一下:
内存的五大区:1.栈 2.堆 3.静态区 4.常量区 5.方法区。
1.栈:不需要手动管理内存,自动管理
2.堆,需要手动管理内存,自己去释放
其他三个凭字面意思理解,我也不是太懂。
方法调用流程:
1.通过isa去对应的类中查找(开发调式过程中,我们都会看到某一个对象的isa指针,就是通过isa指针找到对应的类)
2.注册方法编号(给方法注册编号后,既可以做统计又方便查找。就像我们每个人有自己的身份证号码,学生有学号一样)
3.根据方法编号去查找对应方法
4.找到只是最终函数实现地址,根据地址去方法区调用对应函数

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,885评论 0 9
  • 对于从事 iOS 开发人员来说,所有的人都会答出【runtime 是运行时】什么情况下用runtime?大部分人能...
    梦夜繁星阅读 9,111评论 7 64
  • 把网上的一些结合自己面试时遇到的面试题总结了一下,以后有新的还会再加进来。 1. OC 的理解与特性 OC 作为一...
    AlaricMurray阅读 7,393评论 0 20
  • 目录 Objective-C Runtime到底是什么 Objective-C的元素认知 Runtime详解 应用...
    Ryan___阅读 5,931评论 1 3
  • 输出力,开启了我另一个世界,认识了不同领域的朋友,非常幸运参加这次学习和成长的课堂,让大家在一起在思想碰撞出绚丽的...
    3dac00f56ba8阅读 2,540评论 1 1

友情链接更多精彩内容