swift数据类型分为值类型和引用类型:
值类型,存放在栈区;引用类型,存放在堆区。
值类型:
Int,UInt,Double,Float,Bool,String,Dictionary,Array,Set都是值类型,值类型通过结构体实现
值类型最基本的特征就是:复制一个值类型时两份内存空间独立:
只有类是引用类型,其他类型全部是值类型
struct S{
var data:Int=1;
}
var a =S();
var b = a; //把a赋值给b
a.data=40;
print("\(a.data),\(b.data)"); //输出40,1
//a被改变了,b却没被改变;也就是a和b分别在两块内存,互相独立。
引用类型
是复制一个类型时:两个引用类型指向同一份内存:
class s{
var data:Int=1
}
var a = s()
var b = a;
b.data =40;
print("\(a.data),\(b.data)"); 输出:40,40
a,b同时改变,说明指向同一份内存