美文网首页
Swift 中的值类型与引用类型

Swift 中的值类型与引用类型

作者: H丶ym | 来源:发表于2020-12-15 17:37 被阅读0次

值类型

  • 地址中直接存储具体值(print时直接输出内容,不是地址信息)
  • 在传递过程中,相当于copy了一份新的,类似深拷贝
  • 值类型默认是不可以修改的

在Swift中结构体struct是值类型、类class是引用类型

注意:在编写代码过程中,应该尽量避免值类型包含引用类型

Swift中的类

class Teacher {
    var age: Int = 28
    func teach(){
        print("teach")
    }
}

var t = Teacher()
var t2 = t

添加断点查看tt2

我们可以看到地址是一样的,修改t2后,t的值也会跟着变化,与OC中一样

Swift 中的结构体

结构体的属性初始值要不就有默认值,要不就在init方法中赋值

struct Teacher {
    var age: Int = 28
    func teach(){
        print("teach")
    }
}
var t = Teacher()
var t2 = t
t2.age = 18
print(t)
Teacher(age: 28)
Program ended with exit code: 0

我们可以发现tt2本质上就是两个东西,修改t2,跟t无关

inout关键字

一般情况下,在函数的声明中,默认的参数都是不可变的,如果想要直接修改,需要给参数加上inout关键字

class Teacher {
    func test(_ a: inout Int) {
        a = a + 1
    }
}
var age = 30
var t = Teacher()
t.test(&age)
print(age)

mutaing关键字

在函数内动态修改属性
本质上是值类型函数中self添加了inout关键字,相当于在值传递的过程中,传递的是引用(即地址)


编译器告诉我们需要添加一个mutaing关键字,修改如下
struct Teacher {
    var age: Int = 28
    mutating func happyNewYear(){
        age = age + 1
        print(age)
    }
}

var t = Teacher()
t.happyNewYear()
29
Hello, World!
Program ended with exit code: 0

相关文章

  • Swift值类型&引用类型

    Swift值类型&引用类型 前言 值类型和引用类型是Swift中两种数据存储方式,简单来说值类型就是直接存储的值,...

  • Note 3 Swift (1)

    Swift学习笔记 变量与常量 变量 常量 值类型与引用类型 值类型 引用类型 数组与字典 数组 字典

  • Swift 关键词 -- struct/enum/mutatin

    struct struct 值引用 在swift中,类型引用和值引用的区别在于,对于类型引用(class refe...

  • 值类型和引用类型

    // 值类型和引用类型 // Swift 中 Int, Bool,struct, enum 是值类型,甚至 Str...

  • Swift中的值类型与引用类型

    值类型与引用类型 值类型,即每个实例只保持一份数据拷贝。引用类型,即所有实例共享一份数据拷贝。 在Swift中,`...

  • 【极客班】Swift高级编程一

    Swift语言简介 值类型与引用类型 类型成员: 类与结构:类的实例是对象,结构的实例是值;类的存储是引用类型,堆...

  • swift的值类型和引用类型

    swift的类型有哪些?   swift的类型分为值类型和引用类型两种。值类型在传递和赋值时将进行复制,而引用类型...

  • value type vs reference type in

    swift 中 值类型 vs 引用类型 整理如下: 类型存储备注比喻Value Type 值类型Get Store...

  • Class和Struct比较

    从类型上看,在Swift中,Class是引用类型,Struct是值类型。值类型在传递和赋值的时候进行深复制,而引用...

  • iOS Swift 值类型与引用类型使用区别

    值类型在传递和赋值时将进行复制,而引用类型只会使用引用对象。Swift中定义的很多类型都是值类型,如struct、...

网友评论

      本文标题:Swift 中的值类型与引用类型

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