iOS runtime执行时具体解释

什么是runtime?

runtime直译就是执行时间,run(跑,执行) time(时间),网上大家都叫它执行时,它是一套比較底层的纯C语言API,属于一个C语言库,包括了非常多底层的C语言API,它是OC的幕后工作者,我们平时写的OC代码,在执行过程时,都会转为runtime的C语言代码

runtime有什么用?

假设你之前不知道runtime,可能认为它没什么用,事实上他的作用很强大.以下我们就以代码的形式为大家揭开runtime的神奇面纱

作用1  获取一个类所有成员变量名(假设你的成员私有,也能够获取到)

我们新建一个Person类,.h代码例如以下

这些成员变量都是公有的,我们直接点开头文件就能够看到,假设是系统的类呢,你是不是就不知道类里面有哪些成员了,利用runtime能够轻松解决问题,如今我们来測试一下,记得要加 #import

打印结果

你能够试一下,把全部的成员放到.m文件中面,它打印的结果是一样的.

作用2  同理,我们能够获取到一个类的所有属性名

打印结果:

作用3 获取一个类的所有方法

打印结果:

我们能够看到全部的方法

作用4 获取一个类遵循的全部协议

先将遵循的协议给凝视掉

測试代码

结果啥都没有打印出来

我们把遵循的代码凝视给打开

再运行測试代码,打印结果

是不是非常棒,你可能认为貌似用处不太大,那接下来我们来看看怎样利用runtime归档和解档.

作用5 归档/解档測试例如以下:

时间: 2024-08-10 15:09:52

iOS runtime执行时具体解释的相关文章

IOS -执行时 (消息传递再探究)

一 消息查找优化 至此.我们已经明确了Objective-c中大致的消息传递过程,我们发现假设每次函数调用都经历上面的过程(.那函数调用的效率就会非常低,尤其是当类的继承层次非常多的时候.它须要一层层的查找其效率将会更低,为了加快查找调用的速度,Objective-c对消息查找做了优化. 从前一节的类对象我们知道它含有一个?struct objc_cache *cache成员,这个缓存就是为了提高查找的效率的. 每一个类都有自己的缓存,同一时候包含继承的方法和在该类中定义的方法. 当我们在查找I

iOS runtime运行时详解

什么是runtime? runtime直译就是运行时间,run(跑,运行) time(时间),网上大家都叫它运行时,它是一套比较底层的纯C语言API,属于一个C语言库,包含了很多底层的C语言API,它是OC的幕后工作者,我们平时写的OC代码,在运行过程时,都会转为runtime的C语言代码 runtime有什么用? 如果你之前不知道runtime,可能觉得它没什么用,其实他的作用非常强大.下面我们就以代码的形式为大家揭开runtime的神秘面纱 作用1  获取一个类全部成员变量名(如果你的成员私

IOS - 执行时 (经常使用函数)

能够通过NSObject的一些方法获取运行时信息或动态运行一些消息: /*Returns a Boolean value that indicates whether the receiving class is a subclass of, or identical to, a given class.*/ + (BOOL)isSubclassOfClass:(Class)aClass; /*Returns a Boolean value that indicates whether inst

C++ - RTTI(RunTime Type Information)执行时类型信息 具体解释

RTTI(RunTime Type Information)执行时类型信息 具体解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/24369987 RTTI, RunTime Type Information, 执行时类型信息, 是多态的主要组成部分, 通过执行时(runtime)确定使用的类型, 执行不同的函数,复用(reuse)接口. dynamic_cast<>能够 使基类指针转换为派生类的指针, 通过推断指针的类型

iOS开发——高级特性&amp;Runtime运行时特性详解

Runtime运行时特性详解 本文详细整理了 Cocoa 的 Runtime 系统的知识,它使得 Objective-C 如虎添翼,具备了灵活的动态特性,使这门古老的语言焕发生机.主要内容如下: 引言 简介 与Runtime交互 Runtime术语 消息 动态方法解析 消息转发 健壮的实例变量(Non Fragile ivars) Objective-C Associated Objects Method Swizzling 总结 引言 曾经觉得Objc特别方便上手,面对着 Cocoa 中大量

iOS开发之runtime运行时机制

最近参加三次面试都有被问到runtime,也不知道面试官们自己懂不懂,反正就喜欢问,似乎就想把我唬住,来显示自己的对OC底层知识的理解很牛逼似的.(我现在开始看面试题,发现他们都喜欢问面试题的问题,我算明白了,都是应试教育惹的祸,大概他们以前没什么实际的app经验,所以准备了很多面试题,而我真的是能写app,先干活再找方法的人,面试不多,没什么面试经验,看来要开始碰壁多次才能掌握中国式面试).因为不太懂runtime我就只能支支吾吾的说点零碎.我真的好几次努力想看一看runtime的知识,因为知

iOS的runtime运行时机制

本文转自http://www.cnblogs.com/guoxiao/p/3583432.html 最近一直在研究runtime运行时机制的问题,我想可能也有很多人不太清楚这个问题吧?在这里跟大家沟通分享下我对与runtime机制的理解. 要理解runtime,首先我们要了解类和对象的内部结构,下面将首先介绍下OC中类与对象的结构层次. 一.首先,从 runtime.h头文件中找到对 class 与 object 的定义 /// An opaque type that represents an

iOS执行时工具-cycript

cycript是大神saurik开发的一个很强大的工具,能够让开发人员在命令行下和应用交互,在执行时查看和改动应用.它确实能够帮助你破解一些应用,但我认为这个工具主要还是用来学习其它应用的设计(主要是UI的设计及实现). 这个工具使用了Objective-C和Javascript的混合模式,能够实时的和应用交互甚至改动应用.它的网址请猛戳这里.在官网上能够下载到完整的软件包.使用的方式有两种,一种是在越狱的设备上通过MobileSubstrate加装,这样能够在全部的应用里使用:还有一种是通过静

iOS runtime和runloop

runtime 和 runloop 作为一个程序员进阶是必须的,也是非常重要的, 在面试过程中是经常会被问到的, 所以大家有必要进行研究,有能力的童鞋可以和下面作者一样, 亲历实践一下. 在简书里发现了两篇非常好的文章介绍 runtime和runloop的,在这里合二为一了, 把原版作者的东西拿了过来, 为了尊重作者,在这里注明一下 @sam_lau 是runtime的作者, @tripleCC是runloop的作者   RunTime Objective-C是基于C语言加入了面向对象特性和消息