主题
值类型与引用类型的区别
Swift 中数据类型分为值类型和引用类型,二者在内存和赋值行为上有明显区别。
值类型(Value Types)
值类型在赋值或传参时,会复制数据本身,修改副本不影响原始值。结构体(struct)、枚举(enum)、基本数据类型(如 Int、String)都是值类型。
swift
struct Point {
var x: Int
var y: Int
}
var p1 = Point(x: 0, y: 0)
var p2 = p1
p2.x = 10
print(p1.x) // 输出 0,p1 不受影响
引用类型(Reference Types)
引用类型在赋值时,复制的是引用,多个变量指向同一实例,修改会影响所有引用。类(class)是引用类型。
swift
class Person {
var name: String
init(name: String) {
self.name = name
}
}
var person1 = Person(name: "小明")
var person2 = person1
person2.name = "小红"
print(person1.name) // 输出 小红,person1 被修改
理解两者区别有助于合理设计数据结构和避免潜在错误。