iOS中的runtime入门(一)

        runtime是iOS开发中的一个重要知识点,runtime简称运行时,objective-c中最主要的是消息机制,这里我们可以对比下C和OC的操作方式:C语言函数的调用在编译的时候会决定调用哪个函数,而oc中是动态调用的过程,在编译的时候并不真正决定调用哪个函数,只有在真正运行的时候才会根据函数的名称找到其相对应的函数进行调用。

  我们知道,方法调用的本质实际是让对象发送消息,我们平时使用的SEL类型实际是个方法编号,根据编号就能找到相对应的方法,iOS使用runtime的具体步奏其实也不麻烦,归纳一下如下:

第一步:导入<objc/message.h>库框架,不导入此框架是无法写响应的函数的;

第二步: 2:BuildSetting中搜索msg,将属性修改成NO,既不严格的检查,xocde从5开始已经不建议使用底层的函数了,因此在这里要把这个开关打开,才能继续使用;

第三步:使用响应的函数即可

下边介绍下简单的使用调用方法,也是根据别人的总结得来的知识,感谢之;

1:调用对象方法;首先说明一点,oc是运行时的概念,所有的方法调用都是发送消息;还有一个SEL类型的概念,SEL说白了就是个编号,记录着方法的编号,每个类都有个方法列表,列表放的就是SEL的编号,对应着相对应的方法的实现;有了这些,就可以使用方法了;具体的方法为:objc_msgSend(),该方法有参数,第一个为实体对象,第二个为相对应的方法,以及响应的参数;调用该函数之后,相应的对象就调用响应的方法,如    objc_msgSend(file, @selector(printHellooWorld));意思即是执行:file对象调用printHellooWorld方法;

2:调用类方法;类方法的调用本质也是将类名转换成类对象然后进行调用;因此使用runtime调用类方法的时候分两步:第一步是:首先拿到类名,第二步是:使用类名调用响应的方法:例子如下:

Class className = [TestFile class];
[className performSelector:@selector(pringClassfunction)];
objc_msgSend(className, @selector(pringClassfunction));

如上就实现了runtime函数对类方法的基本调用;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值