Runtime 基本介绍(一)

1.Runtime是什么

Runtime又叫运行时,是iOS内部核心之一,起底层实现是C语言,平时调用的活着编写的OC代码,底层基本都是基于Runtime实现的。比如:

[rereiver message];底层运行时会被编译器自动转为:objc_msgSend(recveiver,selector); 如果带有参数的话:[receeiver message:(id)arg...]; 底层运行时会被编译器转为:objc_msgSend(receiver,selector,arg1,arg2...)

2.使用Runtime 的原因

1.OC 是一门动态语言,他将一部分工作放在了运行时才处理而不是编译时处理。有很多类和成员变量在编译时我们时不知道的,而在运行时,我们所编写的代码才会转换成完整的确定的代码去运行。因此,仅仅只有一套编译器是不够的额,还需要一套运行时系统(Runtime System)来处理编译后的工作。

2.Runtime 基本是用C语言和汇编语言来编写的,动态系统使用高效。

3.Runtime的作用

OC 在三种层面上与Runtime 系统进行交互

1.通过OC源代码

只需要编写OC代码,Runtime系统自动在幕后搞定一些,调用方法,编译器会将OC代码转换成运行时代吗,在运行时确定数据结构和函数。

2.通过对 Runtime库函数的直接调用

Runtime系统具有公共接口的动态共享库,头文件存在于/usr/include/objc目录下,这意味着我们使用时只需要引入objc/Runtime.h头文件即可。许多函数可以让你使用C代码来实现Objc同样的功能。除非是写一些Objc与其他语言的桥接或着是底层的debug工作,你在写Objc代码时,一般不会用到这些C语言函数。

3.通过Foundation框架的NSObject类来定义的方法

Cocoa程序中绝大部分类都是NSObject类的子类,所以都继承了NSObject的行为。(NSProxy类是个例外,他是个抽象类)。一些情况下,NSObject类仅仅定义了完成某件事情的模版,并没有提供所需要的代码。例如 - description方法,该方法返回类内容的字符串表示,该方法主要用来调试程序。NSObject类并不知道子类的内容,所以他只返回类的名字和对象的地址,NSObjecta的子类,可以重新实现。

还有一些NSObject的方法,可以从Runtime系统中获取信息,允许对象进行自我检查。例如:

-class 方法返回当前对象的类

-isKindOfClass:和-isMemberOfClass:方法检查对象是否存在于指定的类的额继承体系中(是否是其子类或着父类或着当前类的成员变量);

-responseToSelector:检查对象是否响应指定的消息;

-conformsToProtocol:  检查对象是否实现了指定协议类的方法;

-methodForSelector: 返回指定方法实现的地址。

 

本文来源自其他文章

 

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UEFI(统一的可扩展固件接口)是一种现代化的计算机固件接口标准,取代了传统的BIOS(基本输入/输出系统)。UEFI系统引导过程中使用了一个名为"System Table"的数据结构,它提供了有关系统硬件和固件的重要信息。 UEFI System Table是一个位于固件内存中的数据结构,由UEFI固件在启动时创建和填充。它包含了多个表项,每个表项描述了一个特定的系统资源或功能。其中最重要的表项是ACPI(高级配置和电源接口)表项和SMBIOS(系统管理BIOS)表项。 ACPI表项提供了系统的配置信息和电源管理功能。它描述了硬件设备、中断控制器、内存映射、电源管理等方面的信息,以便操作系统能够正确地与硬件交互。 SMBIOS表项提供了关于系统硬件配置的详细信息,如处理器、内存、硬盘、显卡等。这些信息对于操作系统和应用程序来说非常有用,可以用于识别系统硬件并进行适当的配置。 除了ACPI和SMBIOS表项,UEFI System Table还包含其他表项,如Boot Services Table和Runtime Services Table。Boot Services Table提供了启动时的基本服务,如内存管理、文件系统访问等。Runtime Services Table提供了在操作系统运行期间可用的服务,如时间管理、变量存储等。 总之,UEFI System Table是一个非常重要的数据结构,它为操作系统和应用程序提供了访问系统硬件和固件功能的接口。通过解析和利用System Table中的信息,操作系统能够正确地配置硬件和提供适当的功能支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值