runtime

2021-10-27  本文已影响0人  QYCD

Objective-C扩展了C语言,并加入了面向对象特性和Smalltalk式的消息传递机制,这个扩展的核心是用C和汇编语言编写的runtime库,它是Objective-C面向对象和动态机制的基石。可以在这里下载苹果维护的开源代码。

Objective-C将一些决定性的工作从编译期推迟到了运行时阶段,实现Objective-C语言运行时机制的一切基础就是runtime

Objective-C在三个不同的级别上与runtime系统进行交互:

Objective-C源代码

大多数情况我们只需要编写Objective-C代码即可,其他都交由runtime系统来后台执行具体的操作。
比如:

[receiver message];
//底层运行时会被编译器转化为
objc_msgSend(receiver, selector);
//若存在参数 则
objc_msgSend(receiver, selector, arg1, arg2, ... );
NSObject类

Cocoa程序中绝大部分类都继承自NSObject类,所以都继承了NSObject的行为。

- (BOOL)isKindOfClass:(Class)aClass;
- (BOOL)isMemberOfClass:(Class)aClass;
- (BOOL)conformsToProtocol:(Protocol *)aProtocol;

- (BOOL)respondsToSelector:(SEL)aSelector;

- (IMP)methodForSelector:(SEL)aSelector;
直接调用runtime函数

runtime系统是一个由一系列数据结构和函数组成,具有公共接口的动态共享库,其构成了NSObject类的基础,大部分还是使用更上层的接口编程,一般会用在hook接口或者与其他语言桥接等场景。


https://www.jianshu.com/p/633e5d8386a8

https://www.cnblogs.com/ioshe/p/5489086.html

上一篇 下一篇

猜你喜欢

热点阅读