微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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来完成。

原文地址:https://www.jb51.cc/swift/321675.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐