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
msgSend
融云聊天页面长按消息后“翻译”功能的实现方法
https://www.rongcloud.cn/自定义消息文档:https://docs.rongcloud.cn/v4/views/im/ui/guide/private/conversation/
msgsend
技术小弟
·
2024-09-05 19:00
ios c语言调用oc方法,ios-面试-OC 方法调用的过程原理
OC中的所有方法调用,最终都是转换成runtime中的一个C语言消息分发函数:objc_
msgSend
(消息接收者,方法名,参数。。。)
weixin_39615419
·
2024-09-05 07:16
ios
c语言调用oc方法
objc_
msgSend
动态查找
1.objc_class的chache找2.在对象的方法列表里找3.去父类指针指向的对象中去执行1.24.直到根类也没找到就消息转发5.调用resolveInstanceMethod让类添加这个方法的实现6.forwardingTargetForSelector让对象执行这个函数7.forwordInvocation更灵活的处理函数调用8.都没找到doesNotRecognizeSelector
Jonnyking
·
2024-02-14 15:04
【Effective Objective - C 2.0】——读书笔记(二)
文章目录前言六、理解“属性”这一概念七、在对象内部尽量直接访问实例变量八、理解“对象等同性”这一概念九、以“类族模式”隐藏实现细节十、在既有类中使用关联对象存放自定义数据十一、理解objc_
msgSend
温柔何曾赋我
·
2024-02-12 07:15
c语言
ios
objective-c
OC中的Category(三)
调用initialize方法是通过runtime的objc_
msgSend
的方式调用,所以会存在如果子类没有实现会调用父类的initialize方法,并且优先调用类分类中存在的initializ方法+ini
aaayia
·
2024-02-10 07:32
objc_
msgSend
流程分析
背景如果大家用clang编译编译过oc的代码,你会发现oc的所有方法调用最终都都转换成了objc_
msgSend
,而它内部是如何实现的呢,对于我们开发过程中经常遇到的unrecognizedselectorsenttoinstance
会跑的鱼_09
·
2024-02-09 01:50
监控OC方法耗时
监控OC方法耗时TimeProfilerhookobjc_
msgSend
的效果objc_msgSendhookobjc_msgSendhookobjc_
msgSend
的优化TimeProfilerTimeProfiler
FFFF00
·
2024-02-06 12:07
Objc_
msgSend
流程
在了解objc_
msgSend
之前,需要先了解runtime。Runtime是一套底层纯C语言API,Objective-C代码最终都会被编译器转化为运行时代码,通过消息机制决定函数调用方式。
_涼城
·
2024-02-02 09:05
iOS--经典问题:runtime三种调用方式
intargc,constchar*argv[]){@autoreleasepool{//insertcodehere...Person*p=[[Personalloc]init];[prun];objc_
msgSend
OXHO
·
2024-02-01 22:10
ios runtime入门
OC通过消息发送进行传递的objc_
msgSend
(class,SEL,arg1,arg2,...);class:消息的接收者,SEL
Mjs
·
2024-01-31 12:54
Objective-C:Runtime
objc_
msgSend
底层调用有3大阶段1.消息发送objc_
msgSend
执行流程01-消息发送.png2.动态方法解析objc_
msgSend
执行流程02-动态方法解析.pngvoidc_other
zhouluyao
·
2024-01-31 07:16
Effective oc 2.0 第二章学习--对象、消息、运行期
运行期前言理解属性这一概念属性特质原子性读写权限内存管理语义方法名注意的点要点在对象内部尽量直接访问实例变量注意的点要点理解“对象等同性”这一概念特定类所具有的等同性判断方法等同性判断的执行深度理解objc_
msgSend
菜的不敢吱声
·
2024-01-29 18:58
学习
ios
objective-c
oc 分类方法、+(void)load、+(void)initialize方法调用分析
addedList数组中,所以最后参与编译的分类方法在addedList的最前面3、把2中的addedList的方法整体插入到类对象的methodList的最前面4、当上层在调用某个方法时通过objc_
msgSend
森_ab60
·
2024-01-29 17:15
谈谈你对Runtime的理解
1.讲一下oc的消息机制OC的方法调用其实都转成的objc_magSend函数的调用,给方法调用者发送一条消息objc_
msgSend
底层有3大阶段:消息发送(从当前类父类中查找)、动态方法解析、消息转发
麟枫_Jack
·
2024-01-28 21:39
IOS开发谈谈对Runtime 和 Runloop的理解
作用消息机制原理:对象根据方法编号SEL去映射表查找对应的方法实现方法调用的本质就是让对象发送消息objc_
msgSend
,只用对象才能发送消息,因此以objc开头。
谢千域
·
2024-01-25 12:31
Objective-C Runtime Programming
编译器将其转化为:objc_
msgSend
(receiver,selector,arg1,arg2,...)。
农场主er
·
2024-01-25 02:46
#
Objective-C
ios
objective-c
OC,objc_
msgSend
()函数做了哪些事
OC,objc_
msgSend
()简介:用一句话简介消息传递那就是:用一个C语言函数,向一个实例传递一个字符串,实例拿到字符串后与自己的method_list中的SEL比较,遇到一样的就找到对应IMP执行
BangRaJun
·
2024-01-23 13:31
oc-底层原理之objc_
msgSend
方法快速查找
这篇文章我们在来研究一下方法的查找方法的查找有两条线路:快速查找(通过汇编实现)慢速查找(通过c实现)(下一篇文章再来探究)方法快速查找方法的快速查找实际是通过缓存来查找,在探究之前,我们先来了解一下objc_
msgSend
沉默Coder
·
2024-01-22 15:41
深入解构objc_
msgSend
函数的实现
objc_class(Class对象)结构简介熟悉OC语言的Runtime(运行时)机制以及对象方法调用机制的开发者都知道,所有OC方法调用在编译时都会转化为对C函数objc_
msgSend
的调用。
余青松
·
2024-01-16 14:56
iOS底层 -- Category本质之load、initialize方法
load按照编译先后顺序调用(先编译,先调用)调用子类的+load之前会先调用父类的+load再调用分类的+load按照编译先后顺序调用(先编译,先调用)调用方式根据方法地址直接调用,并不是经过objc_
msgSend
happy神悦
·
2024-01-14 04:07
尝试手写一个更好用的performSelector/
msgSend
(详细修改版)
尝试手写一个更好用的performSelector/
msgSend
(详细修改版)尝试手写一个更好用的performSelector/
msgSend
(详细修改版)
xiaolongLee
·
2024-01-10 23:39
objc_
msgSend
执行流程
oc对象(包括类对象和实例对象)调用方法,主要有3个步骤,分别是消息发送,动态方法解析,消息转发1.消息发送消息发送2.动态方法解析动态方法解析说明其中YMPerson类的.h文件中声明一个-run方法,但.m文件没有进行方法的实现。如果直接调用YMPerson实例对象的run方法,会报找不到方法的崩溃。但在.m实现了+resolveInstanceMethod,并在其中动态添加了方法之后,实例对
xxxxxxxxx_ios
·
2024-01-08 01:32
Runtime-LLVM的中间代码
anInvocation{[superforwardInvocation:anInvocation];inta=10;test(a);}查看super的底层调用什么我们转成c++看到是调用的objc_
msgSend
2
越天高
·
2024-01-07 22:19
Xcode导入runtime框架函数参数没有提示或Too many arguments to function call, expected 0, have 2错误
首先说明下,在Xcode6之前运用objc_
msgSend
,是有参数提示的。但是从Xcode6之后,苹果不推荐我们使用runtime,所以就取消了参数提示功能。估计是不想让我们过多的了解底层。
月沉眠love
·
2024-01-04 04:42
Runtime---objc_
msgSend
执行流程
image-20210506163157805image-20210506163224118image-20210506163239920image-20210506163252297image-20210506163309914image-20210506163328804image-20210506163351992OC方法调用的本质:消息发送机制-msg_Send.OC方法调用的本质就是给对
蒋斌文
·
2024-01-03 19:48
_lookUpImpOrForward慢速方法查找
前言在《IOS底层原理之Runimte运行时&方法的本质》一文中已经分析了objc_
msgSend
查找缓存(cache)的流程,也就是objc_
msgSend
的快速查找流程,当cache中找不到imp的时候
冼同学
·
2023-12-30 22:12
iOS Runtime学习(二) -- Runtime执行顺序
Runtime是一套C语言的API,它封装了很多动态性相关的函数我们平时编写的OC代码,其实底层都是将代码转换成了RuntimeAPI来进行调用二、OC的消息机制OC的方法调用其实都是转成了objc_
msgSend
Q海龙
·
2023-12-30 01:12
八、消息流程之慢速查找
在Object-C中调方法在底层就是调objc_
msgSend
进行发送消息,消息发送时先在Class的cache中查找imp,这一步为快速查找,在cache中没有找到,就会在bits中查找,这一步为慢速查找
Mlqq
·
2023-12-27 08:14
[iOS]消息流程分析之慢速查找
1.慢速查找-汇编部分在快速查找流程中,如果没有找到方法实现,无论是走到CheckMiss还是JumpMiss,最终都会走到__objc_
msgSend
_uncached汇编函数,下面我们看下这个函数的源码
code_ce
·
2023-12-27 00:25
iOS底层探索四(isa初探-联合体,位域,内存优化)
底层探索三(内存对齐与calloc分析)iOS底层探索五(isa与类的关系)iOS底层探索六(类的分析上)iOS底层探索七(类的分析下)iOS底层探索八(方法本质上)iOS底层探索九(方法的本质下objc_
msgSend
ZhaiAlan
·
2023-12-23 07:05
iOS底层
iOS源码
iOS开发
objective-c
ios
一个实例对象调用方法的调用过程
一个实例对象调用方法的调用过程编译->变成objc_
msgSend
(id,SEL,...)根据示例对象的isa指针,找到该对象的Class在Class中根据SEL方法名寻找函数实现IMP寻找过程先在当前类的
_一叶孤帆
·
2023-12-21 01:40
第十一节—objc_
msgSend
(三)动态决议
本文为L_Ares个人写作,以任何形式转载请表明原文出处。在第九节快速查找流程和第十节慢速查找流程之后,方法的查找流程就已经完成了。但是在第十节慢速查找流程的done之前的最后一步仍然没有找到方法的实现,还没有介绍。那一步就是本节的重点——动态决议,也叫动态方法解析。动态决议的目的是:给没有找到imp的类一次通过resolveInstanceMethod添加imp的机会。从而不进行崩溃的信息打印,
L_Ares
·
2023-12-02 22:05
Initialize方法底层实现
initialize方法调用时机:initialize在类第一次接收到消息时调用,也就是objc_
msgSend
(),当一个类在查找方法的时候,会先判断当前类是否初始化,如果没有初始化就会去调用initialize
code_ce
·
2023-11-30 21:02
iOS-底层原理-消息流程objc_
msgSend
分析之methodList(慢速查找)、动态方法决议、消息转发
1.什么是慢速查找、动态方法决议、消息转发前面的博客介绍了,objs_
msgSend
查找cache的快速查找流程,即实例对象查找类对象cache,类对象查找元类对象的cache,也就是说,通过isa指向找到第一个查找节点的
如意神王
·
2023-11-29 01:59
2019-11-13 ios消息转发机制
所有的函数调用转化为C函数即obj_
msgSend
(id,sel,param)不同于其他语言,在对象中声明的方法可以不必非得实现,编译也能通过,虽然最后程序会崩溃。
北你妹的风
·
2023-11-28 20:10
iOS runtime使用
1.发送消息objc_
msgSend
(obj,@selector(func));调用实例方法objc_
msgSend
([Objclass],@selector(func));调用类方法2.交换方法//加载内存时调用
罗马危机
·
2023-11-27 17:43
Objective-C的消息转发机制
1.Objective-C中方法的调用在Runtime期间,都会转为objc_
msgSend
(receiver,selector,arg1,arg2,...).默认的objc_
msgSend
会接收两个隐藏的参数
我的昵称是小狼
·
2023-11-27 06:15
objc_
msgSend
之方法快速与慢速查找
在上篇Runtime学习之objc_
msgSend
分析中我们简单的介绍了下对于Runtime的理解,以及objc_
msgSend
消息转发的流程做了简单介绍,那么今天我们就整体的做一次流程的分析和梳理,方便后续的学习总结一
Mr_yu__
·
2023-11-22 06:46
ios
objective-c
xcode
算法
flutter
ISA的结构详解
任何一个对象都有一个isa,通过isa指向,可以找到父类,以及根元类的相关的实例方法,在iOS开发过程中isa的作用可以说非常重要,不可替代,因为有了iOS,系统才能才是实现相关的runtime、objc_
msgSend
携YOU手同行
·
2023-11-21 13:10
(四)消息与运行期
第11条:理解objc_
msgSend
。Objective-C是C的超集,所以有必要先理解C语言的函数调用方式。
不会游的海鸥
·
2023-11-20 17:08
发现程序崩在一个objc_
msgSend
函数里面,这时候可以看的到当前正在调用哪个对象的哪个selector吗?
是可以的。崩溃在这里,有两种可能,一个是Receiver出问题,一种是selector出问题。最常见的就是僵尸对象,向已经释放的对象发送消息。还有野指针。常用解决方法。1、在scheme中打开对象跟踪的属性EnableZombieObjects2、使用Instruments-Zombies检测https://blog.csdn.net/potato512/article/details/56281
natewang
·
2023-11-19 11:04
python—requests模块使用代理
代理 "https":"https://ip:8118"##https代理}req=requests.get(token_url,proxies=proxies)req=requests.post(
msgsend
_url
心软且酷丶
·
2023-11-11 07:28
运维
python
python
request
网络
Runtime之objc_
msgSend
底层窥探上
SEL怎么找到IMPobjc_
msgSend
的过程大致是1、先从接收者类的cache中查找方法,找到了直接返回IMP2、没找到就从消息接收者的方法列表查找.3、从Superclass的缓存列表找4、从Superclass
BetterG
·
2023-11-06 10:55
iOS 底层原理 - 方法的本质objc_
msgSend
分析
Runtime的介绍要看方法的本质先简单介绍一下Runtime。Objective-C是一个动态语言,这意味着它不仅需要一个编译器,也需要一个运行时系统来动态得创建类和对象、进行消息传递和转发,也就是Runtime。Runtime是一套由C,C++,汇编写成的一套api,为OC提供运行时功能。为什么不用OC呢,这是因为对我们编译器来说,OC属于更高级的语言,相比于C和C++以及汇编,执行效率更慢,
yan0_0
·
2023-11-06 09:50
iOS 运行时
可以通过Objc编译器器命令@selector()或者Runtime系统的sel_registerName函数来获取一个SEL类型的方法选择器.IMP实际上是一个函数指针,指向方法实现的地址.objc_
msgSend
星星编程
·
2023-11-05 18:13
iOS底层 - 方法慢速查找流程分析
iOS开发底层探究之路慢速查找汇编分析在上篇文章iOS底层-objc_
msgSend
快速查找流程分析中我们分析了通过汇编进行的objc_
msgSend
快速查找流程:CacheLookup汇编方法在cache
Lcr111
·
2023-11-04 15:54
objc_
msgSend
底层探索(上)
我这篇文章呢,主要来分析一下objc_
msgSend
,关于他的一个执行流程和快速查找的过程,那首先我需要了解一下Runtime是怎么调起底层的呢?也就是Runtime是怎么发起的呢?
iOS慢慢
·
2023-11-04 06:28
iOS initialize
调用顺序先调用父类的initialize在调用子类的initialize(先初始化父类,在初始化子类,每个类都只会初始化一次)initialize和load区别的是initialize是通过objc——
msgsend
nickNic
·
2023-10-31 19:02
iOS消息转发
我们已经研究了objc_
msgSend
从汇编快速查找缓存流程,慢速查找流程,动态方法决议流程,如果这几个流程下来都没找到合适的执行方法,接下来就会走到消息转发流程。消息转发流程都有哪些呢?
镜像
·
2023-10-31 05:17
用运行时命令实现不引入头文件
2018年9月21日一.前期准备1.如需要项目支持objc_
msgSend
工程如下修改:image.png2.常见几种类型函数原型a.无返回值无参数void*(*action)(id,SEL)=(void
wangyu2488
·
2023-10-30 07:43
上一页
1
2
3
4
5
6
7
8
下一页
按字母分类:
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
其他