APP下载

基于Runtime的iOS编程研究与实现

2021-03-09特日根

吉林大学学报(信息科学版) 2021年1期
关键词:定义方法

胡 坤, 特日根

(长光卫星技术有限公司 a. 数据中心; b. 吉林省卫星遥感应用技术重点实验室, 长春 130000)

0 引 言

iOS的编程语言objective-C是对C语言的扩展, 加入了面向对象和消息传递机制, 其函数的调用过程是动态的[1], 在编译时并不能决定真正调用的函数, 只有在真正运行时才会根据函数的名称找到对应的函数实体进行调用。而这个消息传递机制的核心是由C语言和汇编语言编写的Runtime库完成的[2], 它是objective-C语言面向对象和动态机制的核心[3]。

Runtime的核心是消息传递, 高级编程语言想要成为可执行文件需要先编译为汇编语言再汇编为机器语言。机器语言也是计算机能识别的唯一语言, 但objective-C并不能直接编译为汇编语言, 而是要先转写为纯C语言再进行编译和汇编操作, 从objective-C到C语言的过渡就是由Runtime实现的[4]。然而C语言是面向过程的编程语言, 而使用objective-C进行面向对象开发时, 就需要将面向对象的类转变为面向过程的结构体实现[5]。

笔者针对实际编程开发中无法修改系统方法的问题, 首先研究Runtime的主要API(Application Programming Interface)接口以及消息传递的本质, 然后使用恰当的接口函数对系统方法动态的修改和替换, 从而提高了开发效率, 降低程序运行故障率。

1 消息机制

在objective-C语言中, 实例对象在调用方法时, 编译器在编译阶段不知道调用方法的具体位置, 只有在运行时, 才会向实例对象发送消息, 并通过遍历实例对象进行方法选择。这种机制称为消息机制。Runtime的特性主要是消息传递, 若消息在对象中找不到, 则进行消息转发。……

登录APP查看全文

猜你喜欢

定义方法
永远不要用“起点”定义自己
定义“风格”
学习方法
用对方法才能瘦
成功的定义
四大方法 教你不再“坐以待病”!
赚钱方法
捕鱼
修辞学的重大定义
山的定义