runtime(一)

原创 2016年05月30日 13:45:20

一.runtime简介

1. RunTime简称运行时。OC就是运行时机制,也就是在运行时候的一些机制,其中最主要的是***消息机制***。


2. 对于C语言,函数的调用在编译的时候会决定调用哪个函数。

3.对于OC的函数,属于动态调用过程,在编译的时候并不能决定真正调用哪个函数,只有在真正运行的时候才会根据函数的名称找到对应的函数来调用。

事实证明:
在编译阶段,OC可以调用任何函数,即使这个函数并未实现,只要声明过就不会报错。但是在编译阶段,C语言调用未实现的函数就会报错。

二.runtime作用

1.发送消息
1.方法调用的本质,就是让对象发送消息。
2.objc_msgSend,只有对象才能发送消息,因此以objc开头.
3.使用消息机制前提,必须导入#import <objc/message.h>
4.消息机制简单使用:clang -rewrite-objc main.m 查看最终生成代码


// 创建person对象
Person *p = [[Person alloc] init];
// 调用对象方法
[p eat];
// 本质:让对象发送消息
objc_msgSend(p, @selector(eat));
// 调用类方法的方式:两种
// 第一种通过类名调用
[Person eat];
// 第二种通过类对象调用
[[Person class] eat];
// 用类名调用类方法,底层会自动把类名转换成类对象调用
// 本质:让类对象发送消息
objc_msgSend([Person class], @selector(eat));

注意:消息机制原理:对象根据方法编号SEL去映射表查找对应的方法实现

版权声明:本文为博主原创文章,未经博主允许不得转载。

Runtime(一) 初识runtime

iOS开发中的runtime被称为黑魔法,本节就向大家讲解什么是runtime.runtime 是属于OC底层的实现,可以进行一些OC无法操作的事情 1.利用Runtime,在程序运行时,动态加载...
  • shaohua_lv
  • shaohua_lv
  • 2017年04月21日 15:16
  • 218

java中runtime异常

Runtime是运行时的意思,Runtime Error就是运行时错误,就是在运行期间出现的错误。 An error that occurs during the execution of a ...
  • xiai_fei
  • xiai_fei
  • 2011年04月25日 00:13
  • 3388

Runtime(一)

一些公用类: @interface CustomClass : NSObject - (void) fun1; @end @implementation C...
  • majiakun1
  • majiakun1
  • 2014年08月09日 10:02
  • 682

RunTime(一)

对于runtime机制,在网上找到的资料大概就是怎么去用这些东西,以及查看runtime.h头文件中的实现,当然这确实是一种很好的学习方法,但是,其实我们还是不会知道runtime底层编译成C++语言...
  • pengyuan_D
  • pengyuan_D
  • 2015年07月09日 16:54
  • 401

runtime总结一runtime概述

在runtime系列文章中我会按照以下顺序浅谈自己关于runtime的理解 runtime的概述 runtime的相关概念 runtime消息机制 消息传递 动态方法解析 消息转发 runtime的...
  • li15809284891
  • li15809284891
  • 2017年01月27日 14:21
  • 137

runtime(一)

学习OC编程了一直没有怎么接触过runtime,可是这个又很重要,最近学习下,做个小结。 事情还得从OC独有消息发送说起。OC底层的执行机制跑的是C语言,其实整个iOS系统的底层大部分都是由C语言写...
  • electronmc
  • electronmc
  • 2014年12月26日 23:21
  • 282

runtime (一)

id viewClass = objc_getClass("MyObject"); unsigned int outCount; objc_property_t *properties...
  • gaoyuqiang30
  • gaoyuqiang30
  • 2015年12月03日 16:03
  • 200

关于api-ms-win-crt-runtimel1-1-0dll缺失的解决方案

关于api-ms-win-crt-runtimel1-1-0.dll缺失的解决方案 目录 关于api-ms-win-crt-runtimel1-1-0dll缺失的解决方案 目录安...
  • writeeee
  • writeeee
  • 2017年04月20日 11:37
  • 4147

ArcGIS Runtime SDK for Android教程——(一)介绍以及环境搭建

ArcGIS Android SDK 非常强大,使用它可以让我们做出具有制图、地理编码、导航、地理处理等能力的apps,并且可以结合ArcGISOnline或者自己的ArcGIS server的空间...
  • oEternalFlame
  • oEternalFlame
  • 2016年06月07日 08:47
  • 1895

runtime从入门到精通(三)—— runtime常用接口方法

继续学习runtime,上一篇文章http://blog.csdn.net/coyote1994/article/details/52441513我把苹果关于runtime的官方文档翻译了下。下面我们...
  • coyote1994
  • coyote1994
  • 2016年09月06日 16:38
  • 2000
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:runtime(一)
举报原因:
原因补充:

(最多只允许输入30个字)