美文网首页程序员iOS开发宝典
iOS 方法调用底层代码实现

iOS 方法调用底层代码实现

作者: 不羁的躁动 | 来源:发表于2019-03-05 14:44 被阅读0次

OC中方法的调用底层实现很多开发者都知道是利用消息转发机制来进行的,那么这个底层的代码究竟是怎样实现的呢,今天就为大家解密一番。

1.新建一个项目,创建一个Person类,然后在.h中添加一个方法,并在.m文件中实现。

2.在ViewController中引入Person类,调用方法并打印。

这对大家来说没有任何问题。

3.那接下来, 我们就用消息转发机制来实现这个方法,具体是利用 objc_msgSend 这个方法来实现,但是我们首先要在buildSetting中设置一下,

将这个Enable Strict Checking of objc_msgSend Calls 设置为NO,关闭严格检测,不然调用objc_msgSend 这个方法会报错,然后在ViewController中导入#import<objc/message.h> 头文件。

4.使用消息转发机制代替OC的方法。

这个时候我们就把之前OC方法的代码转化为底层内部实现的代码,但是这个是底层了吗,还不是,还可以进一步转化。

5.这个时候需要问下大家,我们获得一个类和一个SEL方法有什么方式?  方式有很多,但是这里我们只能用字符串才能获取,那方法就很明显了,需要用到以下两个方法。

,那么有了这两个方法,我们上面 Person *p = objc_msgSend(Person.class, @selector(alloc));   中的两个参数,Person.class和alloc方法就可以获取了,同样的,在OC底层代码中,这两个方法也可以用其他代码取代,那就是 objc_getClass和 sel_registerName,完整代码如下图:

6.现在大家是不是对iOS方法调用的底层代码了解了呢,记得关注赞赏我哟,带你解密更多iOS底层知识。

相关文章

  • iOS 方法调用底层代码实现

    OC中方法的调用底层实现很多开发者都知道是利用消息转发机制来进行的,那么这个底层的代码究竟是怎样实现的呢,今天就为...

  • iOS 和 js 交互

    js调用iOS代码 1、iOS定义方法 2、实现方法 3、js端实现方法 js给iOS传参数 1、单个参数 2、多...

  • Vue和ios、android交互通信

    1)原生调用Vue方法 Vue代码 ios调用代码 android调用代码 2)Vue调用原生方法 vue调用代码...

  • ios 打电话

    ios调用拨打电话功能有3种实现方法,依次代码如下:

  • C#流量监控

    NetworkMonitor底层实现 调用方法

  • OC源码分析-Runtime源码分析(五)

    一 : 几种情况底层调用 减 号 方法底层 加号 方法底层 二 : 面试题 代码执行效果以及原因. 上述代码结构...

  • WKWebView与js交互

    js调用oc方法 第一种 html代码 ios代码 oc调用js方法 html代码 oc代码

  • runtime的消息机制

    任何方法调用本质:发送一个消息,用runtime发送消息,OC底层实现通过runtime实现; 我们平时书写的代码...

  • runtime

    1.将某些OC代码转为运行时代码,探究底层,比如block的实现原理;2.拦截系统自带的方法调用(Swizzle ...

  • 方法调用底层实现

    runtime怎么实现方法的调用 :消息机制,runtime系统会把方法调用转化为消息发送。即objc-msgSe...

网友评论

    本文标题:iOS 方法调用底层代码实现

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