返回
用一句话简述Swift中class对象的copy
IOS
2023-10-15 17:19:02
Swift中class对象的copy
在Swift中,class对象可以通过以下两种方式进行copy:
- 浅拷贝(Shallow Copy):浅拷贝是指只拷贝对象本身的数据,而不会拷贝对象引用的其他对象。
- 深拷贝(Deep Copy):深拷贝是指拷贝对象本身的数据以及对象引用的所有其他对象。
浅拷贝可以通过直接赋值来实现,而深拷贝则需要使用专门的函数或方法来实现。
class对象的copy示例
以下代码展示了如何对class对象进行浅拷贝:
class Person {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
}
var person1 = Person(name: "John", age: 30)
var person2 = person1
person2.name = "Mary"
person2.age = 35
print(person1.name) // John
print(person2.name) // Mary
在这个例子中,person2
是person1
的浅拷贝。当我们修改person2
的属性时,person1
的属性不会受到影响。
以下代码展示了如何对class对象进行深拷贝:
class Person {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
func copy() -> Person {
return Person(name: self.name, age: self.age)
}
}
var person1 = Person(name: "John", age: 30)
var person2 = person1.copy()
person2.name = "Mary"
person2.age = 35
print(person1.name) // John
print(person2.name) // Mary
在这个例子中,person2
是person1
的深拷贝。当我们修改person2
的属性时,person1
的属性不会受到影响。
总结
在Swift中,class对象可以通过浅拷贝和深拷贝两种方式进行copy。浅拷贝只拷贝对象本身的数据,而深拷贝则拷贝对象本身的数据以及对象引用的所有其他对象。