Swift静态和动态分发机制

Free functions,and methods called on structs,are statically dispatched. This means the function that’ll be called is kNown at compile time. This also means the compiler might be able to inline the function,i.e. not call the function at all,but instead replace it with the code the function would execute. It can also discard or simplify code that it can prove at compile time won’t actually run.

全局函数和或者在结构上调用方法使用的是静态分发的机制。这意味着函数调用在编译时已知。这同样表示编译器内联函数。举个例子,不是调用函数而是将其替换为函数本身的代码。他同样可以丢弃和简化编译时被证明实际不运行的代码

Methods on classes or protocols might be dynamically dispatched. This means the compiler doesn’t necessarily kNow at compile time which function will run. This dynamic behavior is done either by using vtables (similar to how Java or C++ dynamic dispatch works),or in the case of @objc classes and protocols,by using selectors and objc_msgSend.

在类或协议上的方法是动态分发的。这意味着编译器并不一定知道在编译时刻哪个函数将会运行。这种动态行为用虚表(类似于Java或C++动态分发那样)或者在使用@objc修饰类或协议的情况下,使用选择器和objc_msgSend来完成。

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...