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
IOS-Runtime
IOS-RunTime
(刨根问底)
方法调用让我们看一下方法调用在运行时的过程(参照前文类在runtime中的表示)如果用实例对象调用实例方法,会到实例的isa指针指向的对象(也就是类对象)操作。如果调用的是类方法,就会到类对象的isa指针指向的对象(也就是元类对象)中操作。首先,在相应操作的对象中的缓存方法列表中找调用的方法,如果找到,转向相应实现并执行。如果没找到,在相应操作的对象中的方法列表中找调用的方法,如果找到,转向相应实
weixin_34343308
·
2024-01-25 02:06
runtime
移动开发
c/c++
iOS-Runtime
学习
1.isa详解在arm64之前,isa指针就是一个普通的指针,里面存储了class和metaClass的地址。在arm开始之后,对isa指针进行了优化,使用了共用体union结构,和位域来存储了更多的信息。2.位域的介绍nonpointer0,代表普通的指针,存储着Class、Meta-Class对象的内存地址1,代表优化过,使用位域存储更多的信息has_assoc是否有设置过关联对象,如果没有,
coderGuo666
·
2023-11-26 04:44
iOS-Runtime
面试题讲一下OC的消息机制OC中的方法调用其实都是转成了objc_msgSend函数的调用,给receiver(方法调用者)发送了一条消息(selector方法名)objc_msgSend底层有3大阶段:消息发送(当前类、父类中查找)、动态方法解析、消息转发消息转发机制流程~什么是Runtime?平时项目中有用过么?OC是一门动态性比较强的编程语言,允许很多操作推迟到程序运行时再进行OC的动态性就
e297b14c9e53
·
2023-08-24 01:06
iOS-Runtime
runtime就是运行时机制,可以通过命令行clang-rewrite-objc对应的目标文件,就能将对应的OC的代码转成对应的运行时的代码所有的OC类和对象,在runtime层都是用struct表示的.用处:1、在category中想添加属性,则可与使用runtime动态添加。objc_setAssociatedObject(self,@selector(summaryDataModel),su
fayxjc
·
2023-07-31 15:32
iOS
ios-Runtime
学习篇
一、基础知识Method:成员方法Ivar:成员变量二、常用方法class_copyPropertyList:获取属性列表class_copyMethodList:获取成员方法列表class_copyIvarList:获取成员变量列表ivar_getName:获取变量名property_getName:获取属性名使用示例:1.获取成员变量列表//1.获取变量listunsignedintivarC
命运建筑师fly
·
2023-04-11 20:54
谈谈
iOS-runtime
一、什么是Runtime(运行时)Runtime是用来将面向对象的Objective-C转换成面向过程的C的一套纯C语言API,有了Runtime可以将数据类型的确定由编译时推迟到运行时。二、runtime作用常用的功能API1、能获得某个类的所有成员变量、方法、属性2、交换方法实现3、能动态添加一个成员变量、一个属性4、字典转模型5、runtime归档/反归档下面实例代码举例:1.动态交换方法开
小熊_07cb
·
2023-04-08 00:21
【
iOS-RunTime
系列二】isa指针
runTime底层的一些常用数据结构,比如isa指针;arm64之前,isa就是一个普通的指针,存储着Class、Meta-Class对象的内存地址,arm64开始,对isa进行了优化,变成了一个共同体union结构,isa&ISA_MASK才得到真实地址值;看一下底层objc_object:structobjc_object{private:isa_tisa;//32位的时候是`Class`,现
GeniusWong
·
2023-03-31 07:37
ios-runtime
面试题
1.输出结果是啥,会不会崩溃?//MNPerson@interfaceMNPerson:NSObject@property(nonatomic,copy)NSString*name;-(void)print;@end@implementationMNPerson-(void)print{NSLog(@"self.name=%@",self.name);}@end------------------
逆流瞅瞅
·
2023-03-30 15:20
iOS-Runtime
篇
Runtime的特性主要是消息(方法)传递,如果消息(方法)在对象中找不到,就进行转发,具体怎么实现的呢。我们从下面几个方面探寻Runtime的实现机制。Runtime介绍Runtime消息传递Runtime消息转发Runtime应用Runtime介绍Objective-C扩展了C语言,并加入了面向对象特性和Smalltalk式的消息传递机制。而这个扩展的核心是一个用C和编译语言写的Runtime
MirL
·
2023-03-14 05:55
iOS-Runtime
在开发中的使用及相关面试题
OC语言中最为强大的莫过于OC的运行时机制-Runtime,但因其比较接近底层,一旦使用Runtime出现bug,将很难调试,所以Runtime在开发中能不用就不用.下面我将介绍一些Runtime在开发中的使用,已经面试可能遇见的面试题.1.OC语法和Runtime语法的区别OC语法和Runtime语法的区别,换而言之就是OC中我们写的语句,最终被转换成Runtime中什么样语句.由于Xcode6
飙车的鱼
·
2022-02-20 16:57
iOS-runtime
之提纲挈领
要学习runtime,那就必须了解runtime是什么.runtime是运行时机制什么是runtime?1>runtime是一套底层的C语言API(包含很多强大实用的C语言数据类型、C语言函数)2>实际上,平时我们编写的OC代码,底层都是基于runtime实现的也就是说,平时我们编写的OC代码,最终都是转成了底层的runtime代码(C语言代码)既然要学习runtime,那肯定要知道runtime
HelloYeah
·
2022-02-14 02:42
iOS-Runtime
之class_addMethod给类动态添加方法
class_addMethod官方文档如下:/***Addsanewmethodtoaclasswithagivennameandimplementation.**@paramclsTheclasstowhichtoaddamethod.*@paramnameAselectorthatspecifiesthenameofthemethodbeingadded.*@paramimpAfunction
MinggeQingchun
·
2021-10-05 22:13
iOS-OC
runtime
class_addMethod
iOS-Runtime
之SEL、IMP、Method
SEL、IMP、Method之间的关系:一个类(Class)持有一个分发表,在运行期分发消息,表中的每一个实体代表一个方法(Method),它的名字叫做选择子(SEL),对应着一种方法实现(IMP)。具体的分析如下:参考苹果官方公开源码objc4源码在线浏览objc4源码下载1、SEL在上述苹果官网公开源码objc4的objc.h文件中,定义如下:///Anopaquetypethatrepres
MinggeQingchun
·
2021-10-04 21:40
iOS-OC
Runtime
SEL
IMP
Method
iOS-runtime
自定义KVO----分类添加关键属性
1.KVO原理2.runtime自定义KVO3.runtime给分类添加关联属性我们注册监听的时候,会对注册者动态的创建一个子类对象,然后底层找方法的的isa指针就变成指向新创建的子类对象。当改变注册对象某个属性的时候,就重写属性的set方法来进行监听。这么说可能理解上不是很明白,下面我们结合代码来分析:自定义#importNS_ASSUME_NONNULL_BEGIN@interfaceNSOb
武一顶顶
·
2021-06-24 07:00
iOS-RunTime
在实际开发中的应用
什么是runtime?runtime是OC底层的一套C语言的API(引入或),编译器最终都会将OC代码转化为运行时代码,通过终端命令编译.m文件:clang-rewrite-objcxxx.m可以看到编译后的xxx.cpp(C++文件)。比如我们创建了一个对象[[NSObjectalloc]init],最终被转换为几万行代码,截取最关键的一句可以看到底层是通过runtime创建的对象1385290
木子奕
·
2021-04-24 16:44
iOS-runtime
的应用
首先导入头文件#import通过runtime的一系列方法,可以获取类的一些信息,包括:属性列表,方法列表,成员变量列表,和遵循的协议列表。1、获取列表获取属性列表有时候会有这样的需求,我们需要知道当前类中每个属性的名字。unsignedintcount;//获取列表objc_property_t*propertyList=class_copyPropertyList([selfclass],&c
Arthur澪
·
2020-12-23 17:33
iOS-runtime
的基本用法
iOSruntime基本用法本内容为作者原创,未经允许,不得用于商业用途我的blog一.改变实例变量的值(KVC/MJExtension都是通过这种方式来实现的)添加Person类,只添加了name属性,这里跳过实现文件@interfacePerson:NSObject@property(copy,nonatomic)NSString*name;@end创建Person类型的实例对象self.pe
Homer1ynn
·
2020-08-21 06:40
iOS-Runtime
基础结构
iOSRuntimeRuntime概念:OC是基于C的,区别于C的一点就是OC属于动态语言,并且有面向对象的特性。相比于C,函数的调用在编译的时候会决定调用哪个函数。OC会在编译和链接时做的事情放到了运行时(Runtime)来处理,其调用函数的方法为msg_send,属于动态调用,只有在真正运行才会根据函数名称找到对应的函数来调用。即使调用未实现的方法在编译阶段也不会报错(调用阶段如果不处理仍会c
Number_0_0
·
2020-08-13 12:17
iOS开发
ios-Runtime
调用私有方法
有时在代码中会有需要调用私有方法的场景,如不想import太多头文件;想组件设计一些解耦的模块;查看别人模块中未暴露的代码进行分析等。在ios中调用私有方法有很多种方式,主要是通过Runtime去实现。下面自己也测试一下。新建一个Person类,Person.h中不写代码,Person.m中如下:#import"Person.h"@implementationPerson-(void)eat{NS
denghuan1938
·
2020-08-10 06:30
iOS-Runtime
消息机制
Runtime消息机制:本质上讲,OC的每一次方法调度都是一次消息的发送。其中方法调度的原理如下:/*******************************************************************idobjc_msgSend(idself,SEL_cmd,...);************************************************
Number_0_0
·
2020-08-09 06:32
iOS开发
iOS runtime详解3
IOS-runtime
[0]Outline--[1]版本和平台--[2]与RuntimeSystem交互--[3]方法的动态决议--[4]消息转发--[5]类型编码--[6]属性声明[1]版本和平台RuntimeSystem
zrhloveswallow
·
2020-08-04 10:09
iOS
runtime详解
runtime
iOS-runtime
详解(一)消息传递中的各种结构
文章目录理解消息传递。objc_msgSend的作用边界情况Self&SuperObject&Class&MetaClasiSA详解小插曲,来看看什么是关联对象实例回到iSAISA()消息传递中如何找寻方法。Methodclass_data_bits_tbits;lldb打印验证class_ro_t*的结构realizeClassWithoutSwift小总结参考文章理解消息传递。objc_msg
wtl1804
·
2020-08-04 08:27
iOS-runtime
详解(二)weak底层原理
文章目录查看汇编查看源码关键方法storeWeak总结用法探索结构体SideTables()补充知识分离锁weak_table_t结构体weak_entry_tweak_register_no_lock方法添加弱引用weak_entry_for_referent取元素append_referrer添加元素weak_unregister_no_lock移除引用deallocclearDealloca
wtl1804
·
2020-08-03 12:52
iOS-RunTime
https://www.jianshu.com/p/19f280afcb24https://www.jianshu.com/p/ce97c66027cd本想自己总结下,看了这篇文章,总结的很详细了,有这一片文章就够了!一、什么是runtime?1.Objective-C是一门动态语言,它是基于C的,它为C添加了面向对象的特性。它将很多静态语言在编译和链接时期做的事放到了runtime运行时来处理。
KevinChein
·
2020-07-31 16:20
iOS-Runtime
在开发中的使用及相关面试题
OC语言中最为强大的莫过于OC的运行时机制-Runtime,但因其比较接近底层,一旦使用Runtime出现bug,将很难调试,所以Runtime在开发中能不用就不用.下面我将介绍一些Runtime在开发中的使用,已经面试可能遇见的面试题.1.OC语法和Runtime语法的区别OC语法和Runtime语法的区别,换而言之就是OC中我们写的语句,最终被转换成Runtime中什么样语句.由于Xcode6
起个名字好难O0
·
2020-07-29 19:29
iOS-runtime
使用总结
关联staticconstcharLJKey='\0';objc_setAssociatedObject(self,&LJKey,header,OBJC_ASSOCIATION_ASSIGN);objc_getAssociatedObject(self,&LJKey);获取类名+(NSString*)xx_getClassName:(Class)class{constchar*className=
LJMagicCoder
·
2020-07-09 01:47
iOS-RunTime
,不再只是听说
一.RunTime简介RunTime简称运行时。OC就是运行时机制,也就是在运行时候的一些机制,其中最主要的是消息机制。对于C语言,函数的调用在编译的时候会决定调用哪个函数,如果调用未实现的函数就会报错。对于OC语言,属于动态调用过程,在编译的时候并不能决定真正调用哪个函数,只有在真正运行的时候才会根据函数的名称找到对应的函数来调用。在编译阶段,OC可以调用任何函数,即使这个函数并未实现,只要声明
_小和
·
2020-07-06 08:41
iOS-Runtime
RunTime简介1.runtime是OC的底层实现,runtimeAPI都是纯c代码.2.所有类中存在的东西,都可以用runtime来获得.3.类:是给程序员看的,runtime:转化成计算机能够看懂的东西.Runtime基础介绍1.获取属性//通过runtime获得类中属性的列表//就是返回的属性个数,也就是返回值的数组的countunsignedintoutCount;objc_proper
B_C_H
·
2020-07-05 14:58
iOS-runtime
1查找类的所有属性和访问属性import//先导入runtime库文件unsignedintcount=0;//所有属性名获得指定类里面所有属性object_getClass(car)可以获取对象的真实的类,防止工厂模式设计Ivar*members=class_copyIvarList([Carclass],&count);for(inti=0;i
亦晴工作室
·
2020-06-30 20:59
iOS-runtime
理解与运用
在我们刚刚开始学习oc这门语言时,总有一些词我们在各种基础入门教程上反复提到,例如,Objective-C语言是一门动态语言,且面向对象,why?Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理。这种动态语言的优势在于:我们写代码时更具灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换一个方法的实现等。这种特性意味着Objective-C不
百有异用是書生
·
2020-06-27 21:12
iOS-Runtime
一.什么是runtime?话说每次面试都问runtime,你不会runtime能拿到像我66k的工资吗?所以关于runtime,咱还是得好好学一学的.OC是一门面向对象的高级语言,内部封装的是C语言,那么是通过什么方式来封装的?答案就是:runtime.runtime是一套由c、c++、汇编实现的API,它为OC语言加入了面向对象特性和动态运行的功能.小拓展runtime源码地址--->数字最大的
globalYK
·
2020-04-09 13:36
iOS-Runtime
基础篇
Runtime的特性主要是消息(方法)传递,如果消息(方法)在对象中找不到,就进行转发,具体怎么实现的呢。我们从下面几个方面探寻Runtime的实现机制。Runtime介绍Runtime中的数据结构Runtime消息传递Runtime消息转发Runtime介绍静态语言:如C语言,编译阶段就要决定调用哪个函数,如果函数未实现就会编译报错。动态语言:如OC语言,编译阶段并不能决定真正调用哪个函数,只要
hevin
·
2020-04-08 23:03
iOS-Runtime
一、runtime简介RunTime简称运行时。OC就是运行时机制,也就是在运行时候的一些机制,其中最主要的是消息机制。对于C语言,函数的调用在编译的时候会决定调用哪个函数。对于OC的函数,属于动态调用过程,在编译的时候并不能决定真正调用哪个函数,只有在真正运行的时候才会根据函数的名称找到对应的函数来调用。事实证明:在编译阶段,OC可以调用任何函数,即使这个函数并未实现,只要声明过就不会报错。在编
lancely
·
2020-04-08 05:18
iOS-Runtime
方法交换
iOS开发中需要在原有的方法之后执行新的方法,如果我们想在UIController中的viewWillAppear之后执行其他的操作,或者说需要重写原有的设置颜色,位置等操作,都可以通过方法交换实现,实际操作也很简单,通过分类方法中的load方法实现:@implementationUIViewController(FlyElephant)+(void)load{staticdispatch_onc
FlyElephant
·
2020-04-03 23:55
iOS-runtime
RunTimeruntime的简介runtime是一套比较底层的纯C语言API,属于1个C语言库,包含了很多底层的C语言API。在我们平时编写的OC代码中,程序运行过程时,其实最终都是转成了runtime的C语言代码,runtime算是OC的幕后工作者.例如:OC就是典型的运行时机制,OC属于动态调用过程,在编译的时候并不能决定真正调用哪个函数,只有在真正运行时才会根据函数的名称找到对应的函数来调
金歌漫舞
·
2020-04-02 11:25
iOS-runtime
的理解
什么是runtime官方描述:TheObjective-Clanguagedefersasmanydecisionsasitcanfromcompiletimeandlinktimetoruntime.“尽量将决定放到运行的时候,而不是在编译和链接过程”runtime是一个C语言库,包含了很多底层的纯C语言API。平时编写的OC代码中,程序运行,其实最终都是转成了runtime的C语言代码,run
Arthur澪
·
2020-03-25 16:15
iOS-Runtime
Runtime简介RunTime简称运行时。OC就是运行时机制,也就是在运行时候的一些机制,其中最主要的是消息机制。对于C语言,函数的调用在编译的时候会决定调用哪个函数。对于OC的函数,属于动态调用过程,在编译的时候并不能决定真正调用哪个函数,只有在真正运行的时候才会根据函数的名称找到对应的函数来调用。OC消息机制Runtime的很重要的一个机制就是消息机制,OC中的方法调用其实本质就是发送消息。
天外丶飞仙
·
2020-03-17 07:35
iOS-runtime
入门和简单用法.
开端因为最近APP总会有很多Crash信息定位在主函数main里面,所以发现很多出现的BUG不好定位修改,所以就想通过iOS的runtime机制,自己写个防crash机制,并且收集信息.当然通过google,和百度的一系列查询后,大概Copy了个简单的Crash信息防护,和收集系统,借鉴的资料有网易一个团队的大白系统http://www.jianshu.com/p/02157577d4e7(我记得
可以叫我汤包呀
·
2020-03-12 18:30
iOS-Runtime
之数组越界
关于数组越界目前大概有两种方式,一种是通过分类添加安全的索引方法,第二种就是Runtime实现,第一种如果是个人开发比较建议,如果是团队开发很难得到保证和推动,关于Runtime处理数组越界网上有人说是在iOS7及以上有软键盘输入的地方按Home键退出,会出现崩溃,测试过两台手机iOS8.1和iOS9.3暂时没有出现问题,如果之后出现问题会更新文章.方法交换Runtime解决数据越界及字典key或
FlyElephant
·
2020-02-27 22:49
iOS-RunTime
动态添加属性和方法
1.1动态添加属性:#import"Person.h"#importconstchar*homeKey="homeKey";@implementationPerson@dynamichome;//通过运行时,动态添加属性-(void)setHome:(NSString*)home{[selfwillChangeValueForKey:home];objc_setAssociatedObject(s
rainbowboy
·
2020-02-11 16:17
ios-Runtime
(运行时)
利用runtime来实现归档解档//告诉系统,归档哪些属性-(void)encodeWithCoder:(NSCoder*)coder{//利用runtime来归档!!unsignedintcount=0;/*拷贝Person类里的所有成员变量&count获得count的地址来改变它的值&取地址符countPerson这个类的成员变量的个数*/Ivar*ivars=class_copyIvarLi
走在大神的路上
·
2020-02-08 00:56
iOS-runtime
通篇详解-下
上接上篇
iOS-runtime
通篇详解-上原创内容,转载请注明出处:http://www.jianshu.com/p/4c276f5c338cclass-responseclass-conformsclass-is
抱紧我的小鲤鱼
·
2020-01-06 22:27
iOS-Runtime
原理及使用
Runtime原理1.Runtime简称运行时.OC就是运行时机制,(就是系统在运行的时候的一些机制)其中最主要的是消息机制.对于C语言,函数的调用在编译的时候会决定调用哪个函数.对于OC的函数,属于动态调用过程,在编译的时候并不能决定真正调用哪个函数,只有在真正运行的时候才会根据函数的名称找到对应的函数来调用.2.它是一个主要使用C和汇编写的库,为C添加了面相对象的能力并创造了Objective
指头飞血
·
2020-01-04 15:25
iOS-runtime
之面试题详解二
序言现在面试的时候,runtime被面试到的概率为百分之百,所以为了获得一个更好的工作,薪资更高的工作,非常有必要对runtime有一个全面而深入的理解,本文可以帮助读者实现这个愿望,详情请看下文。一面试题1.讲一下OC的消息机制OC中的方法调用其实都是转成了objc_msgSend函数的调用,给receiver(方法调用者)发送了一条消息(selector方法名)objc_msgSend底层有3
路飞_Luck
·
2020-01-04 09:17
iOS-Runtime
从认识到深入
技术文章/超人Runtime(运行时机制)概念Object-C是面向对象的语言,C是面向结构也就是面向过程的语言。Object-C是基于C基础上的语言。而Runtime为Object-C添加了面向对象的特性,将静态语言编译期和链接期做的事情放到了运行时来处理。所以Runtime是每一个IOS开发人员都应该了解的。Runtime是一套纯C的API。Objective-C不仅需要一个编译器,还需要一个
树下敲代码的超人
·
2020-01-03 08:17
iOS-runtime
之类型编码
runtime在函数参数中使用了类型编码作为其中一个参数,用来标识函数的返回值及参数的类型。首先类型编码可以使用@encode()来查看。CODEMEANcAchariAnintlAlongqAlonglongCAnunsignedcharIAnunsignedintSAnunsignedshortLAnunsignedlongQAnunsignedlonglongfAfloatdAdoubleB
42chaos
·
2020-01-01 22:50
iOS-runtime
一、基本概念Runtime基本是用C和汇编写的,可见苹果为了动态系统的高效而作出的努力。你可以在这里下到苹果维护的开源代码。苹果和GNU各自维护一个开源的runtime版本,这两个版本之间都在努力的保持一致。Objective-C从三种不同的层级上与Runtime系统进行交互,分别是通过Objective-C源代码,通过Foundation框架的NSObject类定义的方法,通过对runtime函
道陌人
·
2019-12-29 04:32
iOS-runtime
RunTime1.runtime的简介runtime是一套比较底层的纯C语言API,属于1个C语言库,包含了很多底层的C语言API。在我们平时编写的OC代码中,程序运行过程时,其实最终都是转成了runtime的C语言代码,runtime算是OC的幕后工作者.例如:OC就是典型的运行时机制,OC属于动态调用过程,在编译的时候并不能决定真正调用哪个函数,只有在真正运行时才会根据函数的名称找到对应的函数
layjoy
·
2019-12-24 05:03
iOS-RunTime
介绍及使用
一、RunTime概念RunTime简称运行时,我们总是听说OC是动态语言运行时机制,也就是系统在运行时候的一些机制,其中最重要的是消息机制。C语言,函数的调用在编译的时候会决定调用哪个函数,如果调用未实现的函数就会报错,而OC语言属于动态调用过程,在编译时并不能决定真正调用哪个函数,只有在真正的运行的时候才会根据函数的名称找到对应函数来调用,当调用该对象上某个方法,而该对象上没有实现这个方法的时
劉光軍_Shine
·
2019-12-17 14:55
iOS快速开发工具集-TFEasyCoder
www.jianshu.com/p/4c276f5c338c前言前两篇分享了一下多线程和动画的内容.一直本着一篇都能讲全一个知识模块的原则,下一篇打算分享一下runtime的大部分api.名字先想好了:下篇:
iOS-runtime
抱紧我的小鲤鱼
·
2019-12-16 19:14
上一页
1
2
下一页
按字母分类:
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
其他