初始runtime(运行时机制)
我们从以下几个方面认识一下runtime:
runtime是什么?
runtime是属于OC的底层,是一套比较底层的纯C语言API,包含了很多底层的c语言API,可以进行一些非常底层的操作。我们平时编写的OC代码中,程序运行过程时,其实最终都是转成了runtime的C语言代码,runtime算是OC的幕后工作中。
[[MJPerson alloc] init] //OC
objc_msgSend(objc_msgSend("MJPerson" , "alloc"), "init")//runtime
runtime可以用来干什么?
1.程序运行过程时,动态创建一个类
2.程序运行时,动态的为每个类添加属性、方法。用于封装框架
3.遍历一个类所有的成员变量、属性、方法。
runtime相关文件和函数
头文件:
<objc/runtime.h>
<objc/message.h>
相关函数:
objc_msgSend : 给对象发送消息
class_copyMethodList : 遍历某个类所有的方法
class_copyIvarList : 遍历某个类所有的成员变量
class_.....
必备知识:
Ivar : 成员变量
Method : 成员方法
转载于:https://www.cnblogs.com/gumengli/p/10234033.html
初始runtime(运行时机制)相关推荐
- iOS的runtime运行时机制
本文转自http://www.cnblogs.com/guoxiao/p/3583432.html 最近一直在研究runtime运行时机制的问题,我想可能也有很多人不太清楚这个问题吧?在这里跟大家沟通 ...
- 浅谈runtime运行时机制
由于OC是运行时语言,只有在程序运行时,才会去确定对象的类型,并调用类与对象相应的方法.利用runtime机制让我们可以在程序运行时动态修改类.对象中的所有属性.方法. 下面就介绍运行时一种很简单的使 ...
- 编译器设计-RunTime运行时环境
编译器设计-RunTime运行时环境 Compiler Design - Run-Time Environment 作为源代码的程序仅仅是文本(代码.语句等)的集合,要使其活动,它需要在目标计算机上执 ...
- Objective-C Runtime 运行时之四:Method Swizzling
理解Method Swizzling是学习runtime机制的一个很好的机会.在此不多做整理,仅翻译由Mattt Thompson发表于nshipster的Method Swizzling一文. Me ...
- Objective-C Runtime 运行时之五:协议与分类
Objective-C中的分类允许我们通过给一个类添加方法来扩充它(但是通过category不能添加新的实例变量),并且我们不需要访问类中的代码就可以做到. Objective-C中的协议是普遍存在的 ...
- Objective-C Runtime 运行时之六:拾遗
前面几篇基本介绍了runtime中的大部分功能,包括对类与对象.成员变量与属性.方法与消息.分类与协议的处理.runtime大部分的功能都是围绕这几点来实现的. 本章的内容并不算重点,主要针对前文中对 ...
- IOS 利用运行时机制来进行归档解档
前言:我们需要对一个类的属性进行归档解档的时候属性特别的多,这时候,我们就会写很多对应的代码,但是如果使用了runtime就可以动态设置,就会变的很轻松! 首先需要导入<objc/runtime ...
- runtime运行时编程一些相关知识
http://blog.csdn.net/lizhongfu2013/article/details/9497721 转载于:https://blog.51cto.com/8287272/167276 ...
- iOS运行时-使用Runtime向Category中添加属性以及运行时介绍
前言 了解OC的都应该知道,在一般情况下,我们是不能向Category中添加属性的,只能添加方法,但有些情况向,我们确实需要向Category中添加属性,而且很多系统的API也有一些在Category ...
- runtime实现的机制是什么,怎么用,一般用于干嘛. 你还能记得你所使用的相关的头文件或者某些方法的名称吗?...
运行时机制,runtime库里面包含了跟类.成员变量.方法相关的API,比如获取类里面的所有成员变量,为类动态添加成员变量,动态改变类的方法实现,为类动态添加新的方法等 需要导入<objc/me ...
最新文章
- 2021全国高校计算机能力挑战赛(初赛)Java试题三
- Python自学路线图之Python进阶
- iOS开发 -------- AFNetworking使用中遇到的小问题
- 搭建TXManager分布式事务协调者
- SAP Spartacus Focusdirective继承自Lockdirective,静态代码分析
- 在 Apex 代码中生成 csv 文件
- 6月10款超赞的jQuery插件新鲜出炉
- C++进阶教程之预存处理器
- JAVA Eclipse如何安装Swing
- jQuery:1.5.1,复选框应用(全选,全不选,反选,提交选中的值,全选/全不选)...
- python指数函数,幂函数
- oracle 查询有字母,oracle中查询含字母的数据[正则表达式]
- 2000-2021年款雷克萨斯原厂全套维修手册+电路图资料下载
- Unity场景打包AssetBundle并加载
- 小米笔记本UEFI关闭安全启动
- 网络安全与渗透:sql注入,一文详解(九)此生无悔入华夏,男儿何不带吴钩
- 前端实现批量下载图片(自己的服务器需设置可跨域请求)
- windows7下系统保护中出现错误“文件名、目录名或卷标语法不正确。(0x8007007B)“ 以及保护设置列表中出现“Windows7_os(c:)(找不到)”选项时的解决方法...
- 特征工程与表示学习:人工 vs 自动
- 今日头条赚钱是真的吗,今日头条赚钱规则是什么
热门文章
- 拓端tecdat|使用SAS,Stata,HLM,R,SPSS和Mplus的多层线性模型HLM
- 拓端tecdat|基于keras平台CNN神经网络模型的服装识别分析
- 【大数据部落】 用机器学习识别不断变化的股市状况—隐马尔可夫模型(HMM)股票指数预测实战
- 5、maplotlib中的轴刻度和轴线
- ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
- caffe上手:如何导出caffemodel参数
- 基于感知哈希算法的图像相似匹配计算实战
- python生成指定年份所有的天,并计算每天属于一年的第几周和周几
- python库发布之从零到一:发布自己的第一个库——blogdownloader
- Python获取列表中字符串最长位置处的索引值