当前位置: 首页 > news >正文

wordpress博客站点地图内蒙古网站建设熊掌号

wordpress博客站点地图,内蒙古网站建设熊掌号,wordpress 子分类,网站建设的技术亮点1. 静态派发#xff08;Static Dispatch#xff09; 静态派发在编译时确定方法的具体实现#xff0c;调用时直接跳转到该实现。静态派发的优点是性能高#xff0c;因为不需要运行时查找方法实现。 适用场景#xff1a; 值类型#xff08;Struct 和 Enum#xff09;Static Dispatch 静态派发在编译时确定方法的具体实现调用时直接跳转到该实现。静态派发的优点是性能高因为不需要运行时查找方法实现。 适用场景 值类型Struct 和 Enum值类型的方法默认使用静态派发。 Final 类和方法标记为 final 的类或方法无法被继承或重写因此使用静态派发。 全局函数和静态方法这些方法在编译时就能确定实现使用静态派发。 示例 struct Point {var x: Intvar y: Intfunc description() - String {return (\(x), \(y))} }let p Point(x: 10, y: 20) print(p.description()) // 静态派发 2. 动态派发Dynamic Dispatch 动态派发在运行时确定方法的具体实现。Swift 中的动态派发主要通过虚表VTable和消息转发Message Forwarding实现。 2.1 虚表派发VTable Dispatch 虚表派发是类方法默认的派发方式。每个类都有一个虚表其中存储了该类所有可重写方法的指针。子类继承父类的虚表并可以覆盖其中的方法指针。 适用场景 类的非 Final 方法类的方法默认使用虚表派发除非标记为 final。 继承和重写子类可以重写父类的方法运行时根据对象的实际类型调用正确的方法。 示例 class Animal {func makeSound() {print(Some sound)} }class Dog: Animal {override func makeSound() {print(Bark)} }let animal: Animal Dog() animal.makeSound() // 动态派发输出 Bark 2.2 消息转发Message Forwarding 消息转发是 Objective-C 的派发机制Swift 通过 objc 和 dynamic 关键字支持这种派发方式。消息转发允许在运行时动态解析方法调用甚至可以在运行时修改方法实现。 适用场景 与 Objective-C 交互标记为 objc 的方法使用消息转发。 动态方法解析标记为 dynamic 的方法使用消息转发允许在运行时修改方法实现。 示例 class MyClass {objc dynamic func sayHello() {print(Hello)} }let instance MyClass() instance.sayHello() // 消息转发 3. 协议派发Protocol Witness Table Dispatch 协议方法使用协议见证表Protocol Witness Table, PWT进行派发。每个遵循协议的类型都有一个 PWT其中存储了协议方法的实现指针。 适用场景 协议方法协议中的方法默认使用 PWT 派发。 泛型约束泛型类型约束为协议时使用 PWT 派发。 示例 protocol Greetable {func greet() }struct Person: Greetable {func greet() {print(Hello)} }let greeter: Greetable Person() greeter.greet() // 协议派发 4. 特殊场景 4.1 泛型方法派发 泛型方法在编译时生成特定类型的实现通常使用静态派发。但如果泛型类型约束为协议则使用协议派发。 示例 func printGreetingT: Greetable(_ greeter: T) {greeter.greet() // 协议派发 }let person Person() printGreeting(person) // 输出 Hello 4.2 扩展中的方法派发 扩展中的方法默认使用静态派发即使是对类类型的扩展。如果扩展中的方法被重写仍然使用静态派发。 示例 class MyClass {func sayHello() {print(Hello from MyClass)} }extension MyClass {func sayGoodbye() {print(Goodbye from MyClass)} }class SubClass: MyClass {override func sayHello() {print(Hello from SubClass)}// 无法重写扩展中的方法 }let instance: MyClass SubClass() instance.sayHello() // 动态派发输出 Hello from SubClass instance.sayGoodbye() // 静态派发输出 Goodbye from MyClass 4.3 objc 和 dynamic 方法 标记为 objc 的方法使用消息转发允许与 Objective-C 交互。标记为 dynamic 的方法也使用消息转发允许在运行时修改方法实现。 示例 class MyClass {objc dynamic func sayHello() {print(Hello)} }let instance MyClass() instance.sayHello() // 消息转发 4.4 final 关键字 标记为 final 的类或方法无法被继承或重写因此使用静态派发。 示例 final class MyFinalClass {func sayHello() {print(Hello)} }let instance MyFinalClass() instance.sayHello() // 静态派发 总结 Swift 的方法派发机制灵活且高效支持多种派发方式以适应不同的场景 静态派发适用于值类型、Final 类和方法性能最高。 动态派发适用于类的继承和重写通过虚表派发。 协议派发适用于协议方法通过协议见证表派发。 消息转发适用于与 Objective-C 交互和动态方法解析。 理解这些派发机制有助于编写高效且符合预期的 Swift 代码。
http://www.zqtcl.cn/news/589754/

相关文章:

  • 口红机网站怎么做wordpress 搭建个人网站
  • 黄金网站房地产网站建设意义
  • 百度网站联盟公司做网站计入那个科目
  • 越秀电子商务网站建设国外的ui设计思想网站
  • 网站关键词优化公司网站建设完成确认书
  • 企业微信网站怎么建设山东有哪些网络公司
  • 做任务领佣金的网站源码页面设计参评
  • 淘宝联盟个人网站怎么做企业年度报告公示系统
  • 长沙企业网页设计哪家专业网站优化seo
  • 网站设计 西安漂亮企业网站源码
  • 云南省科技网站网页设计师有前途吗
  • 漳州网站开发找出博大科技慈溪市建设局网站表格下载
  • 网站到期怎么续费公司网站asp源码
  • 多个域名 一个网站域名解析官网
  • 中国建设银行企业网站旅游网页代码模板
  • 湛江免费企业建站wordpress archives
  • 建个企业网站多少钱图书管理系统网站开发教程
  • 淘宝客网站建设详细教程wordpress转dz
  • 银川网站推广i深建官方网站
  • 有什么较好的网站开发框架娱乐网站模板
  • 宿迁网站建设托管wordpress 萝莉
  • 定制网站开发冬天里的白玫瑰制作复杂的企业网站首页
  • 网站开发及设计演讲海报免费做网站app下载
  • 做动态图片的网站吗自考网站建设与实践
  • 建外贸网站需要多少钱胖咯科技 网站建设
  • wordpress注明网站做微网站的第三方登录
  • 学网站建设维护网站公司建设公司
  • 做小型网站的公司wordpress 主题上传
  • 网站之家查询重庆市建设项目环境申报表网站
  • 网站建设基础及流程网站运营一个月多少钱