标签:
Swift中的类型分为两类:一,值类型(value types),每个值类型的实例都拥有各自唯一的数据,通常它们是结构体,枚举或元组;二,引用类型(reference types),引用类型的实例共享它们的数据,通常是一个类。在这篇文章中我们将会探索值类型和引用类型的价值,以及如何在它们二者间抉择。
// 值类型例子 struct S { var data: Int = -1 } var a = S() var b = a // 把a复制给b a.data = 42 // a被改变了, b却没有 println("\(a.data), \(b.data)") // prints "42, -1" /* 何问起 hovertree.com */
复制一个引用类型的时候,其实是隐式地创建了一个共享的实例。在复制后,两个实例指向了同一块数据,所以当修改其中一个实例数据的时候,另一个实例的数据也被修改了,比如:
// 引用类型的例子 class C { var data: Int = -1 } var x = C() var y = x // x被复制给了y x.data = 42 // x指向的数据被修改了 (同时y也被修改了) println("\(x.data), \(y.data)") // prints "42, 42" /* 何问起 hovertree.com */
标签:
原文地址:http://www.cnblogs.com/roucheng/p/swiftleixing.html