关于Swift中的值类型(Value Types)与引用类型(Reference Type)
Swift里面的类型分为两种: 值类型与引用类型的区别在于: // 下面是一个值类型的例子 struct MyStruct { var data = -1 } var s1 = MyStruct() var s2 = s1 // s2是s1的拷贝 s1.data = 42 // 值类型,改变s1的值,s2不受影响 println("(s1.data),(s2.data)") // 输出结果 "42,-1" 值类型就好像身份证复印件一样,复印出来之后,修改原件上面的内容,复印件上的内容不会改变。 // 下面是一个引用类型的例子 class MyClass { var data: Int = -1 } var x = MyClass() var y = x // y是x的拷贝 x.data = 42 // 引用类型,更改x的值,等于同时修改了y println("(x.data),(y.data)") // 输出结果 "42,42" 值类型较引用类型来说,会让你更容易在大量代码中理清状况。如果你总是得到一个独立的拷贝出来的实例,你就可以放心它不会被你app里面的其他部分代码默默地修改。这在多线程的环境里面是尤为重要的,因为另外一个线程可能会在暗地里修改你的数据。因此可能会造成严重的程序错误,这在调试过程中非常难以排除。 由于差别主要在于修改数据的后果,那么当实例的数据只读,不存在需要更改的情况下,用哪种类型都是没有分别的。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |