值类型和引用类型

值类型赋值时是[内容]新的一份拷贝,而引用类型是引用的拷贝。

swift中结构体、枚举、Int、Double、Bool等是典型的值类型。

swift中String是值类型。
OC中NSString虽然本身是引用类型,但一般用copy修饰,当传过来的是NSMutableString时当作值类型来用。

我认为值类型是为了加强 数据安全。

OC中NSSString用copy修饰,
一是为了数据安全:防止传过来的是NSMutableString,却当作NSSString使用,有可能这个NSMutableString在其他地方已经修改。
二是节约内存:如果被赋值的是NSSString,则共享字符串占用的内存,减少内存占用。

你可能感兴趣的:(值类型和引用类型)