美文网首页
Runtime初步探析

Runtime初步探析

作者: 雨林QiQi | 来源:发表于2020-04-11 22:08 被阅读0次

一、基本概念解析

1.对象的本质——结构体

2.方法的本质——发送消息

3.消息的组成

LGPerson *p = [[LGPerson alloc] init];

[prun];

((void (*)(id, SEL))(void *)objc_msgSend)((id)p, sel_registerName("run"));

void *)objc_msgSend)((id)p——消息接收者

sel_registerName("run") ——方法编号-name

sel_registerName("run")=@selector(run)

imp——函数实现的指针。通过sel找到imp,即通过方法编号找到方法的实现。

4.runtime调用方法的三种方式

4.1通过runtime API

4.2通过NSObject API

4.3OC上层方法 @selector

5.方法

对象方法存在

类方法存在

类方法的元类的存储姿态是“对象方法”

对象在类里是一个实例

类在元类里也是一个实例

6.objc_msgSend

快速:缓存-汇编-cache_t-哈希表

慢速:C、C++ 

7.源码分析流程

8.source

source0:signal->wakeup Runloop

处理App自己的事件,管理自己的事务,UIEvent、CFSocket

source1:mach_port和回调指针

处理线程之间通信

相关文章

  • Runtime初步探析

    一、基本概念解析 1.对象的本质——结构体 2.方法的本质——发送消息 3.消息的组成 LGPerson *p =...

  • Runtime 探析

    Runtime 简介 因为Objective-C是一门动态语言,这意味着它不仅需要一个编译器,也还需要一个运行时的...

  • Runtime大体介绍(附代码)

    Runtime 本文章适合人群:对Runtime有一个初步了解 示例代码:https://github.com/C...

  • iOS 13的VisionKit初步探析

    今天我看了一下iOS 13的新框架,于是试着玩了一下,感觉还挺实用的,所以写这篇文章来记录一下 首先VisionK...

  • 决策树算法的初步探析

    八月快乐呀~小李又回归啦!决策树是从去年就想写的,然而拖延到了现在,果然人总到deadline才有高效的输出。——...

  • objc runtime (二)交换方法

    上一篇介绍了如何用runtime发送消息,大家应该也都对objc runtime有了一个初步的认识,对需要了解的可...

  • Runtime 探析(2) 消息发送与转发

    消息发送和转发流程可以概括为:消息发送(Messaging)是 Runtime 通过 selector 快速查找 ...

  • Swift Runtime-引用计数

    前言 在Swift Runtime-初探一文里,我们初步研究了对象的内存结构.有metadata及Refcount...

  • CocoaData_Runtime初步认识(借鉴)

    1.运行时 VS 编译时 运行时 : 直到程序运行时才确定对象的具体信息 编译时 : 在程序运行之前,编译的时候,...

  • runtime中Method Swizzling的初步使用

    刚接触到这个感觉比较有意思,不过过于依赖runtime的方法去修改方法实现是一个比较危险的行为,确实是用共同基类的...

网友评论

      本文标题:Runtime初步探析

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