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去映射表查找对应的方法实现

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

iOS 用Runtime解决服务器返回NSNull问题

iOS 奇技yin巧–解决服务器返回NSNull问题奇技yin巧 指过于奇巧而无益的技艺与制品. 转载请注明出处 http://blog.csdn.net/uxyheaven/article/deta...

api-ms-win-crt-runtime-l1-1-0.dll文件丢失

  • 2017年11月21日 09:40
  • 12.28MB
  • 下载

Microsoft Visual C++ Runtime 64 bits

  • 2017年11月03日 11:26
  • 6.66MB
  • 下载

Java调用批处理文件,Runtime.getRuntime().exec参数,示例

//测试结果:能打开,但是需要关闭文件才能中止程序。 //String[] cmd = {"notepad.exe","F:\\long_cennect.txt"}; //Process proces...

多线程,runtime测试demo

  • 2017年12月05日 19:40
  • 85KB
  • 下载

RUNTIME_CLASS(运行时间类)

学mfc学到文档,视图和框架的时候,知道必须在这三个类的派生类的类声明 里加上DECLARE_DYNCREATE,然后在类声明外合适的地方加上IMPLEMENT_DYNCREA T...
  • ghevinn
  • ghevinn
  • 2014年03月04日 14:01
  • 8348
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:runtime(一)
举报原因:
原因补充:

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