Swift中值类型和引用类型

Swift值类型和引用类型

值类型

在Swift中,所有基本类型:整型(Int),浮点型(float),布尔类型(Boolean),字符串类型(String),数组类型(Array),字典(Dictionary),元组(Tuple)都是值类型,它们底层都是以结构体(Struct)的形式实现的,所有结构体(struct)也是值类型,枚举(Enum)也是值类型。

创建的任何结构和枚举实例以及它们作为属性的任何值类型在代码中传递时总是被复制,它会创建一个全新的副本,改变副本的值不影响原始数据的值。例如:

struct card
{
    var value1: Int
    var value2: Int

    init(value1: Int, value2: Int){
        self.value1 = value1
        self.value2 = value2
    }
}
var A = card(value1: 10, value2: 10)
var B = A
B.value2 = 20
print(A.value1,A.value2)
print(B.value1,B.value2)

输出结果:

10 10
10 20

B复制了A,在改变B的value2之后,并不会影响A的value2。因为是值拷贝。相当于如下图:

值类型

引用类型

Swift中,类(Class)属于引用类型。与值类型不同,引用类型在分配给变量或者常量,或者传递给函数时,其不会复制。而是对相同现有实例的引用。相当于只是创建一个共享的实例分身,两者公用一套数据。修改一处,另一处也会更改。

比如:

class cards
{
    var value1: Int
    var value2: Int

    init(value1: Int, value2: Int){
        self.value1 = value1
        self.value2 = value2
    }
}
var C = cards(value1: 10, value2: 10)
var D = C
D.value2 = 20
print(C.value1,C.value2)
print(D.value1,D.value2)

显示结果为:

10 20
10 20

D复制C,但因为是引用类型,改变了D的value2的值,C的value2的值也会改变。

好比如下图中:

引用类型

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值