iOS runTime运行时机制

//联系人:石虎  QQ: 1224614774昵称:嗡嘛呢叭咪哄

运行时机制


不同级别的语言


-在计算机上只有01=>本身在计算机上执行的程序都是机器码,一堆二进制的指令!

-汇编语言

C语言(被成为最接近汇编的一门语言)-面向过程的-一旦程序复杂之后,维护起来非常可怕!

-面向对象语言 C++JavaC#OC

-脚本语言 javascriptPythonPerllua......


运行时是用 C++&C语言混编的,目标:在运行时动态的执行代码

-动态加载

-动态类型

-动态绑定


程序的从代码到能够执行的几个重要的阶段

-代码编写

-编译-生成可执行的伪机器码 clang

-链接-把所有需要的框架的伪机器码编练到一起生成真正能够执行机器码


时期:

-编译时

-链接时

-运行时


OC的特点,让所有的事情,尽可能的延后,很多检测工作,在编译的时候并不检查!

而在运行的时候,真正通过消息机制来实现方法的调用!


OC中的运行时机制,类似于执行OC代码的操作系统。



利用 clang 可以将 OC 代码转换成 C++,查看运行时机制的调用方法


$ clang -rewrite-objc main.m



通过运行时机制能够做到,在运行时能够动态的获取一个对象的完整信息,动态增加方法,动态添加属性等等。


主要应用场景:KVC本身就是利用运行时机制实现的!


1. 模型转字典的时候,可以动态获取对象的所有属性

模型转字典


2. 动态的修改一个方法的执行

例子:

1> 开发一个通用设备的应用程序!

2开发初期,只针对iPhone做了开发!

3到后期需要接入 iPad 版本,而且所有程序都是纯代码写的!

界面布局通常是写在 loadView或者 viewDidLoad 方法中


如果需要接入iPAD版本,一旦修改原有的 loadView 方法,就存在风险,如果用运行时机制,可以判断如果是 iPAD 就不执行 loadView,而是使用一个替代方法,loadiPADView


类似于函数的欺骗!

(ASI中有)


3.在程序执行时,尤其网络应用,临时需要添加一个属性,利用运行时,就可以临时给对象添加一个属性!(SDWebImage里面有)


提示:一般运行时最重要的作用是开发OC用的!程序开发时,偶尔利用一下,可以将原本很繁重的工作简化!


但是:运行时的代码最好不要开放出来!在类的内部偶尔使用就行!


谢谢!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值