标签:blog http io ar 使用 for sp strong 数据
helloworld篇章
值:
swift中类型分为两种:第一种是值类型,该类型的每个实例持有数据的副本,并且该副本对于每个实例来说是独一无二的一份,比如结构体(struct)、枚举(enum)、元组(tuple)都是值类型。第二种是参照类型,该类型的实例共享数据唯一的一份副本(在native层面说的话,就是该类型的每个实例都指向内存中的同一个地址),比如类(class)就是参照类型
如果你想创建一个新类型,那么你应该选择值类型还是参照类型呢?当你使用Cocoa框架时,很多API都是NSObject
的子类,那么你就必须要使用参照类型,也就是class
。在其他情况下,这里有一些指导建议你可以参考:
使用值类型的情形:
==
运算符比较实例数据的时候。使用参照类型(比如class
)的情形:
===
运算符判断两个对象是否引用同一个对象实例的时候。在Swift中,Array
、String
、Dictionary
都是值类型。它们的使用方式类似C语言中得int
,每一个实例都有一份数据。你不需要进行显示的复制操作去防止数据在你不知情的情况下被修改。更重要的是,你可以跨线程进行传参而不需要考虑同步的问题,因为传递值类型很安全。秉着高安全性的精神,这种类型划分模式能帮助你在Swift中写出更加有可预测性的代码。
测试代码如下:
//值类型测试 struct a { var item:Int = 10 } var x = a() var y = x y.item = 20 x //数组值类型 var intArray:[Int] = [1,2,3] var bArray = intArray bArray[2] = 4 bArray intArray //字符串值类型 var aString:NSString = "123456" var bString = aString bString = "aswdef" aString //字典值类型 var aDic:Dictionary<String,String>=["三国演义":"罗贯中","水浒传":"施耐庵"]; var bDic = aDic bDic["a"] = "b" bDic aDic aDic.removeValueForKey("水浒传") aDic bDic //参考类型 class aClass { var item:Int = 7 } var aa = aClass() var bb = aa bb.item = 10 aa
playground输出值如下:
标签:blog http io ar 使用 for sp strong 数据
原文地址:http://www.cnblogs.com/yangyu001/p/4067974.html