E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
objc_msgSend
消息转发
objc在向一个对象发送消息时,runtime库会根据对象的isa指针找到该对象实际所属的类,然后在该类中的方法列表以及其父类方法列表中寻找方法运行,然后在发送消息的时候,
objc_msgSend
方法不会返回值
魏志军
·
2021-05-12 10:00
initialize方法底层实现
initialize方法的调用时机1、initialize在类第一次接收到消息时调用,也就是
objc_msgSend
()。2、先调用父类的+initialize,再调用类的initialize。
whbsspu
·
2021-05-10 21:57
Nil
objc_msgSend
这个函数是我们知道
呆萌院长
·
2021-05-10 05:39
Runtime使用
比如Person*person=[[Personalloc]init];这一代码是向编译器发送一个创建person的对象并初始化的消息当编译器看到这一个消息后先调用Person*person=
objc_msgSend
Cat_uncle
·
2021-05-10 03:56
Objective-C 中的消息与消息转发
1.发送消息[receivermessage];都会被转化成
objc_msgSend
(receiver,@selector(message));[objecthello]->
objc_msgSend
(object
Z_Han
·
2021-05-09 04:48
objc_msgSend
调用参数是block的函数
;突然想到如果都用runtime的
objc_msgSend
来调用会什么样子,经
西博尔
·
2021-05-05 20:20
oc 的消息机制
OC中的方法调用,其实都是转换为
objc_msgSend
函数的调用的.比如NSObject*obj=[[NSObjectalloc]init];[objcopy];[objcopy];就会转化为
objc_msgSend
张_何
·
2021-05-03 22:36
iOS 消息传递
如果找不到,
objc_msgSend
将继续从父类中寻找,直到NSObject类。一
fairy冉冉
·
2021-05-02 01:03
iOS runtime(实践篇)
1.消息机制Person*p=[[Personalloc]init];//调用对象方法[peat];//本质:让对象发送消息
objc_msgSend
(p,@selector(eat));2.交换方法当系统提供的方法需要扩展时
userName
·
2021-05-01 10:07
《Effective Objective-C 2.0 》 阅读笔记 item11
第11条:理解
objc_msgSend
的作用1.动态语言特性在Objective-C中,如果向某对象传递消息,那就会使用动态绑定机制来决定需要调用的方法。
dibadalu
·
2021-05-01 02:52
Runtime - 消息转发
现在知道OC中的[receivermessage]在编译阶段仅仅是将方法调用翻译成
objc_msgSend
(receiver,selector).
mdiep
·
2021-04-30 19:48
Runtime运行时之方法执行过程
[personrun];会被编译器转为
objc_msgSend
(person,@selector(run));objc_msgSendobjc_msgSend(person,@selector(run)
风雨路上砥砺前行
·
2021-04-27 20:29
iOS __weak修饰符
我之前的理解:id__weakobj=[[NSObjectalloc]init];/*编译器的模拟代码*/idobj;idtmp=obj_msgSend(NSObject,@selector(alloc));
objc_msgSend
一本大书
·
2021-04-24 20:39
iOS runtime系列三 -- Method Swizzling
MethodSwizzling参考资料1.用到的运行时基础知识介绍SEL:方法选择器,SEL是函数
objc_msgSend
第二个参数的数据类型,表示方法选择器;其实它就是映射到方法的C字符串,你可以通过
shannoon
·
2021-04-22 17:55
initialize方法
会先判断当前类是否初始化,如果没有初始化就会去掉用initialize方法如果这个类的父类没有初始化,就会先调用父类的initialize方法,再调用自己的initialize方法类在调用initialize时,使用的是
objc_msgSend
二斤寂寞
·
2021-04-22 13:55
初识runtime
举例,A对象调用方法goHome.OC的实现代码:[AgoHome];C语言的实现代码:
objc_msgSend
(A,@selector(goHom
LCTSnail
·
2021-04-20 18:46
iOS
objc_msgSend
流程
方法的本质在面向对象编程过程中,我们赋予对象一定的特征与能力,日常开发中,我们不可避免的会调用方法,去帮助我们实现复杂逻辑,那么OC调用方法的本质是什么呢?我们准备一个类Person继承自NSObject。实现方法如下@implementationPerson-(void)study{NSLog(@"%s",__func__);}@end在main函数中调用方法voideat(){printf("
卖馍工程师
·
2021-04-19 18:11
iOS中
objc_msgSend
流程学习
一,前言在iOS开发过程中,我们都知道不管是什么方法的执行,对象的创建,以及代理和Block的实现都离不开runtime,所以runtime可以说是iOS开发过程中的生命存在,运行时存在动态决议的作用,例如我们在一个类的声明中声明了相关的方法,但是并没有进行实现时,进行编译是不会有任何问题的,但是运行时就会报错,告知我们没有实现该方法。接下来我们就重点研究一下运行时为什么会只能的告诉我们没有实现该
携YOU手同行
·
2021-04-19 03:03
iOS-底层探索08:
objc_msgSend
流程分析
iOS底层探索文章汇总一、前言上一篇文章iOScache_t原理分析中我们分析了cache_t的底层代码以及部分原理,在Cache的流程中发现方法的快速查找流程为
objc_msgSend
,那么这篇文章我们就一起分析
differ_iOS
·
2021-04-18 20:00
iOS Runtime详解之SEL,Class,id,IMP,_cmd,isa,method,Ivar
最直接的例子就是方法调用这样的一个OC方法[receivermessage]会被编译成
objc_msgSend
(receiver,selector)这里,先记着receiver就是接受消息的对象,sel
大风天上来
·
2021-04-18 13:43
iOS
objc_msgSend
快速查找流程分析
一、
objc_msgSend
流程简介每一个Objective-C对象都拥有一个类,每个类都有自己的方法列表。每个方法都拥有选择子、一个指向实现的函数指针和一些元数据(metadata)。
奉灬孝
·
2021-04-18 08:19
OC中的load和initialize的区别
OC中的load和initialize的区别调用方式load是根据函数地址直接调用initialize是通过
objc_msgSend
调用调用时刻load是runtime加载类、分类的时候调用(只会调用1
it小小菜鸟
·
2021-04-18 02:47
ios
objc_msgSend
流程
1.runtime简介编译时顾名思义,编译时就是正在编译的时候,而编译,指的是将代码翻译成机器可以识别的代码。在编译时,检查到的错误叫做编译时错误,做的类型检查叫做编译时类型检查,也叫做静态类型检查,这种情况下,是计算机还没将代码运行到内存中,只是把代码以文本的形式进行扫描。运行时运行时,就是代码在内存中运行起来了。运行时与编译时类型检查不一样,不只是简单的扫描代码,而是在内存中做了操作,或者做了
Jeffery_zc
·
2021-04-13 18:14
iOS底层面试题--Runtime
OC中的方法调用其实都是转成了
objc_msgSend
函数的调用,给receiver(方法调用者)发送了一条消息(selector方法名)
objc_msgSend
底层有3大阶段:消息发送(当前类、父类中查找
ptlCoder
·
2021-04-08 09:08
objc_msgSend
消息流程之动态方法决议和消息转发
在前两篇文章
objc_msgSend
流程之快速查找和
objc_msgSend
流程之慢速查找分析了
objc_msgSend
的快速查找和慢速查找,当前面这两种方式都没找到对应的方法实现时,我们可以通过操作下面两个方法来避免方法未实现的奔溃报错动态方法决议
木扬音
·
2021-04-02 20:45
objc_msgSend
消息流程之慢速查找
在上一篇
objc_msgSend
流程之快速查找文章中,我们分析了
objc_msgSend
的快速查找流程,当在快速查找的流程中没有查找到,则会进入慢速查找流程
objc_msgSend
慢速查找流程慢速查找-
木扬音
·
2021-04-02 20:42
objc_msgSend
消息流程之快速查找
在上一篇文章中我们分析cache_t的写入流程,有写入那么就会有读取,这篇文章分析cache_t的读取流程什么是Runtime我们都知道Runtime被称为运行时,他与编译时的区别运行时是代码跑起来,被装载到内存中的过程,如果此时出错,则程序会崩溃,是一个动态阶段编译时是源代码翻译成机器能识别的代码的过程,主要是对语言进行最基本的检查报错,即词法分析、语法分析等,是一个静态的阶段我们可以通过以下三
木扬音
·
2021-04-02 20:39
+load 和 +initialize的区别
调用方式不同:1.1load是根据函数地址直接调用1.2initialize是通过
objc_msgSend
调用调用时刻:2.1load是runtime加载类、分类的时候调用(只会调用一次)2.2initialize
iOS_Coder
·
2021-03-20 19:38
iOS +(void)load和+(void)initialize的区别?
+(void)load方法会在runtime编译加载类和分类时调用,通过函数指针的方式直接调用,并不是通过
objc_msgSend
()(此方式需要通过isa和superclass来查找方法)的方式调用;
飞不越疯人院
·
2021-03-19 14:36
KVC、关联对象、
objc_msgSend
执行流程
年根底下无聊,画了几张图。由于时间关系就画了六张。1、KVC赋值原理KVC赋值原理.png2、KVC取值原理KVC取值原理.png3、关联对象关联对象.png4、消息发送消息发送.png5、动态方法解析动态方法解析.png6、消息转发消息转发.png
云溪_Cloud
·
2021-02-10 17:36
OC底层原理11 - 动态方法解析
动态方法解析之前在分析
objc_msgSend
的时候,当慢速查找和快速查找都未找到SEL时,会根据当前设置的条件(behavior&LOOKUP_RESOLVER)选择是否进行动态方法解析,接下来我们就来探索一下动态方法解析的源码
卡布奇诺_95d2
·
2021-01-29 17:18
OC底层原理10 -
objc_msgSend
流程之方法快速查找
消息查找方法的本质方法的本质就是
objc_msgSend
消息发送。
卡布奇诺_95d2
·
2021-01-28 14:11
iSO底层原理 - load方法和initialize方法的区别整理
iSO底层原理-load方法iSO底层原理-initialize方法load和initialize方法的区别:1、调用方式:1>load是根据函数地址直接调用;2>initialize是通过
objc_msgSend
南城同學
·
2021-01-26 15:09
430, runtime的原理(面试点:Objective-C是一门动态语言,isa指针 对象的isa指针是指类对象,类对象的isa指针指向元类,一个对象或者实例就是一个struct objc_...
方法的调用[peat],会被编译器转成runtime库中的
objc_msgSend
调用的方式来执行,即:[peat]转
objc_msgSend
(p,sel_registerName("eat"))。
枫叶1234
·
2021-01-26 14:44
429,OC中load和initialize的区别(面试点:load是根据函数地址直接调用 initialize是通过
objc_msgSend
调用 load是main函数之前调用,在编译的时候调...
OC文件在编译后,类相关的数据结构会保留在目标文件中,在运行时得到解析和使用。在应用程序运行起来的时候,类的信息会有加载和初始化过程,这个过程就涉及到了类的两个类方法:load和initialize。下面我们就来介绍一下这2个方法的区别。(首先要说明一下,这2个方法是系统调用的,开发者一般不会主动去调用者两个方法,这么做也没有什么意义,所以后面的讲解都是针对系统调用,不考虑主动调用的情况)。loa
枫叶1234
·
2021-01-23 18:31
objc_msgSend
()汇编核心探索(x86_64架构)
寄存器对应须知:函数参数寄存器(%rdi,%rsi,%rdx,%rcx,%r8,%r9)64位32位16位8位%rax%eax%ax%al%rdi%edi%di%dil%r8%r8d%r8w%r8b#definea1rdi//64位#definea1dedi//32位#definea1bdil//8位#definea2rsi//64位#definea2desi//32位#definea2bsil/
薛定谔的汪汪
·
2021-01-08 16:23
2020-12-8
1.调用方式1>load是根据函数地址直接调用2>initialize是通过
objc_msgSend
调用2.调用时刻1>load是runtime加载类、分类的时候调用(只会调用1次)2>initialize
浩楠Bruce
·
2020-12-08 09:23
iOS-底层原理10:消息流程分析之快速查找
在上一篇文章iOS-底层原理9:objc_class中cache原理分析中,分析了cache的写入流程,在写入流程之前,还有一个cache读取流程,即
objc_msgSend
和cache_getImp在探索
AcmenL
·
2020-11-30 14:12
iOS消息发送的调用过程
iOS方法的调用过程[objectmethodA]runtime层会将这个方法翻译成
objc_msgSend
(idself,SELop,...)而
objc_msgSend
具体如何进行分发呢?
林风098
·
2020-11-19 10:41
Runtime 方法调用本质(消息发送、动态方法解析、消息转发)一
OC方法底层调用过程实际上是
objc_msgSend
函数的调用
objc_msgSend
的执行过程大致分成三部分:消息发送->动态方法解析->消息转发消息发送底层实现原理ENTRY_objc_msgSendUNWIND_objc_msgSend
Leaping_Fish
·
2020-11-13 16:11
方法慢速查找流程
上篇文章
objc_msgSend
()快速查找流程分析中,当方法在CacheLookup方法没有被找到的时候,调用了CheckMiss或者JumpMiss,这篇文章来分析下,后面发生了什么。
spades_K
·
2020-11-10 16:57
第十节—
objc_msgSend
(二)方法慢速查找流程
在第九节—
objc_msgSend
消息快速转发的流程中,我们发现了当我们递归取到cache_t中的bucket的sel和
objc_msgSend
入参的idSEL不一致的时候,CacheLookUp会跳转到函数
L_Ares
·
2020-10-28 12:52
iOS底层原理:消息转发之慢速查找
在【iOS底层原理:
objc_msgSend
之缓存查找】中我们分析到,如果缓存没有命中的时候,会默认找到_lookUpImpOrForward方法。
打碟的DJ
·
2020-10-19 10:59
objc_msgSend
慢速查找流程分析
总纲领:OC底层探寻有关上篇文章分析了
objc_msgSend
快速查找流程,当在类的方法缓存中查找不到的话,
objc_msgSend
就会进入慢速查找流程,我们来分析一下:(注,以下代码都是在arm64环境下的
为了自由的白菜
·
2020-10-16 17:10
iOS-OC底层原理_动态方法决议及消息转发
前言在之前的的
objc_msgSend
()探索中,当调用一个方法后,首先会进入快速查找来匹配sel对应的imp;当没有找到时,会进入慢速查找,开始匹配;当依然无法匹配时,苹果给出了一次转发的机会(动态方法决议
泽泽伐木类
·
2020-10-15 16:55
objc_msgSend
消息快速查找
消息发送之快速转发在之前文章objc_class中的cache_t分析中,我们分析了,cache_t存储方法的过程,有留下一个疑问:cache_t在存储方法之前有读取方法的,那它是怎么读取方法的呢?首先,让我们先了解,什么是方法,方法的本质是什么。顾名思义,类或者对象调用一个API,这个API就是方法,平时我们接触太多了,有自己定义的方法,也有调用系统的方法,那么这个方法在底层到底是什么?在何时调
Rachel_雷蕾
·
2020-10-15 15:47
iOS - 探索动态方法决议和消息转发
一、背景上一篇文章中,我们分析了
objc_msgSend
的慢速查找流程,知道了在lookUpImpOrForward中,如果没有找到imp时,会执行一次动态方法决议,即://没有找到方法实现,尝试一次方法解析
Sheisone
·
2020-10-13 19:46
十、消息流程—动态方法决议 & 消息转发
主要内容:
objc_msgSend
的快速查找和慢速查找,都没有找到方法时,苹果给了挽救的机会:一、动态方法决议1.对象方法2.类方法二、消息转发1.快速消息转发2.慢速消息转发一、动态方法决议动态方法决议
顺7zi燃
·
2020-10-13 16:37
九、消息流程—慢速查找
iOS底层探索文章汇总主要内容:一、分析慢速查找调用的方法二、慢速查找源码及流程三、慢速查找中部分具体实现分析慢速查找调用的方法上一章
objc_msgSend
流程—快速查找文中分析,如果快速查找,没有找到时
顺7zi燃
·
2020-10-13 16:33
八、消息流程—快速查找
主要内容:
objc_msgSend
的方法查找流程一、Runtime介绍二、探索方法的本质三、
objc_msgSend
快速查找流程分析上一章cache_t分析中主要分析了cache的写入流程,在写入流程之前还有
顺7zi燃
·
2020-10-13 16:15
上一页
3
4
5
6
7
8
9
10
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他