美文网首页
Swift 类与结构体的区别

Swift 类与结构体的区别

作者: 西风那个吹呀吹 | 来源:发表于2020-09-29 09:14 被阅读0次
  1. 类有继承,结构体没有继承,也就没有重写、多态等特性
  2. 类的汇编代码比结构体多且复杂,所以,结构体的运行效率要比类快一点。


    结构体Person代码

    (1)如图中代码person实例调用speak方法处打断点
    (2)Debug -> DebugWorkflow -> Always Show Disassembly,此设置为断点调试时总显示汇编
    (3)运行代码,进入下图汇编


    结构体Person汇编代码
    绿色框内表示调用(callq)一段内存地址,其实这个内存地址就是函数地址,棕色框内分号表示注释,可以看出,这句汇编代码的意思就是 person 实例调用speak() 方法。
    简单直观,方法地址是一串十六进制数,是固定的,因为不存在继承,就不存在重写之类的,编译后,方法地址就是固定明确的。

    对比类的多态,父类实例指向子类,实例调用方法,可能调用父类方法,也可能调用子类方法,这个方法地址就不能固定了。
    现在,我们将结构体变为类:


类的汇编

如图所示,我们将类型从结构体修改为类类型后,编译的汇编代码多了很多很多,如图中右侧红色框内的滚动条,可以看出汇编代码多了多少。
红色箭头上方的汇编代码就是调用方法,可以看出方法地址是不确定的,因为类的话,将来可能是继承的,这样的话,方法是调用父类的呢?还是调用子类的呢?地址就不能是死的,必须是活的。

结构体的汇编代码比类的汇编代码少得多,运行效率高不少,这也就是为什么苹果官方更加推荐开发者使用结构体的原因吧。
所以,一些明确的类,结构简单,就只放些属性和方法,没有继承啥的,建议使用结构体代替类

相关文章

  • 第九章 类和结构体

    c++中,结构体是稍有不同的类,类能做的,结构体也可以; 而swift中,结构体与类有较大区别, 结构体与类的区别...

  • Swift学习

    Swift类与结构体的区别 struct People {var name : Stringinit(name :...

  • iOS知识点-8.类(class)和结构体(struct)有什么

    Swift Basics 类(class)和结构体(struct)有什么区别? Swift中,类是引用类型,结构体...

  • Swift 类和对象 7.22

    Swift 类和对象 7.22 //与结构体struct的区别//1.用let定义的结构体变量,成员不能修改//2...

  • Swift - 学习

    1.类和结构体的区别 Swift中结构体和类的比较 2.写时拷贝机制 Swift Copy-On-Write 写时...

  • 一些问题(一)

    1. 类(class)和结构体(struct)有什么区别? 在 Swift 中,类是引用类型,结构体是值类型。值类...

  • Swift1-2引用类型与值类型

    之前我们介绍过Swift中class与Struct的区别,他们的本质区别其实就是类型的区别.(类是引用类型,结构体...

  • Swift -- 类与结构体区别

    Swift中类和结构体有很多共同点。共同处在于: 定义属性用于存储值 定义方法用于提供功能 定义下标操作使得可以通...

  • 【Swift】类与结构体区别

    1、结构体有默认的逐一构造器,类没有。 2、结构体是值类型,类是引用类型。 如果在func中需要修改属性,结构体需...

  • 最新iOS开发常见面试题总结一!(附答案)

    1.iOS 类(class)和结构体(struct)有什么区别? Swift 中,类是引用类型,结构体是值类型。值...

网友评论

      本文标题:Swift 类与结构体的区别

      本文链接:https://www.haomeiwen.com/subject/kvpsuktx.html