Skip to content

Instantly share code, notes, and snippets.

@lajosdeme
Created March 2, 2020 13:28
Show Gist options
  • Save lajosdeme/e748a6f225acc13335ab08b3b870ee15 to your computer and use it in GitHub Desktop.
Save lajosdeme/e748a6f225acc13335ab08b3b870ee15 to your computer and use it in GitHub Desktop.
Example of copy-on-write behavior in Swift
final class Person {
var name: String
init(name: String) {
self.name = name
}
}
struct PersonCOW {
private var person: Person
init(name: String) {
person = Person(name: name)
}
var name: String {
get {return person.name}
set {
if !isKnownUniquelyReferenced(&person) {
person = Person(name: newValue)
print("Making a copy")
}
person.name = newValue
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment