美文网首页iOS开发
Swift中class、struct的异同

Swift中class、struct的异同

作者: 悄然林静 | 来源:发表于2020-01-21 15:32 被阅读0次

class是引用类型,struct是值类型。

  • 值类型在传递和赋值时将进行复制,而引用类型仅使用引用对象的指针。
  • 值类型保存在内存的栈区域,引用类型保存在堆区域。
    堆操作比栈操作更加复杂、耗时,所以苹果官方推荐使用结构体以提高App的运行效率。

class的独有功能

  • class可以继承,子类可以使用父类的特性和方法。
  • 类型转换可以在runtime的时候检查和解释一个实例的类型。
  • 类可以用deinit来释放资源。
  • 一个类可以被多次引用。

struct的优势

  • 结构较小,适用于复制操作
  • 相比于一个class的实例被多次引用更加安全。
  • 无需担心内存泄漏、多线程冲突

补充:关于引用类型和值类型

变量的本质是一个内存地址的别名。

区别:
  • 值类型:变量对应的内存地址的内容当做数值。
    值类型保存在内存栈区域,由系统自动释放资源。
  • 引用类型:变量对应的内存地址的内容当做内存地址,再去取改地址的内容。
    引用类型保存在内存堆区域,常见的有类、接口、委托和装箱值类型reference type。
引用规则:
  • 引用被创建的同时必须被初始化(指针则可以在任何时候被初始化)。
  • 不能有NULL引用,引用必须与合法的存储单元关联(指针则可以是NULL)。
  • 一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象)

参考文章:

相关文章

  • Swift中值类型、引用类型:Struct 与Class区别与应

    Swift 中Class和Struct异同 Swift 中类和结构体有很多共同点。共同处在于: 定义属性用于存储值...

  • Swift中class、struct的异同

    class是引用类型,struct是值类型。 值类型在传递和赋值时将进行复制,而引用类型仅使用引用对象的指针。 值...

  • Swift中Class和Struct异同

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

  • iOS知识点总结(面试向)更新中

    Swift 1.Swift中struct和class的区别 Swift中struct和class有什么不一样的地方...

  • Swift class和struct异同点

    相同点: 1.定义属性用于存储值 (property)2.定义方法用于提供功能 (function)3.定义下标操...

  • swift我们应该知道的

    1.class 和 struct 的区别? swift中,class是引用类型,struct是值类型。值类型在传递...

  • Swift理论相关

    类(Class)和结构体(Struct)有什么区别 在swift中,class是引用类型.struct是值类型.值...

  • iOS面试题 - Swift语言

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

  • iOS面试题

    1. struct和class的区别 swift中,class是引用类型,struct是值类型。值类型在传递和赋值...

  • 一些概念的理解

    1. struct和class的区别 swift中,class是引用类型,struct是值类型。值类型在传递和赋值...

网友评论

    本文标题:Swift中class、struct的异同

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