美文网首页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中class、struct的异同

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