Structs vs Classes, properties & inits
Compare value vs reference semantics; use stored & computed properties, property observers, initializers, and class deinit.
Overview
Swift has two main composite types: struct (value) and class (reference).
- Structs copy on assignment
- Classes share references
Value vs reference
Structs copy values; classes share references. Changing b does not affect a, but d affects c.
struct Point { var x = 0, y = 0 }
class CPoint { var x = 0, y = 0 }
var a = Point(x: 1, y: 1)
var b = a // copy
b.x = 9
print("struct a.x =", a.x, "b.x =", b.x) // 1, 9
let c = CPoint(); c.x = 1
let d = c // same reference
d.x = 9
print("class c.x =", c.x, "d.x =", d.x) // 9, 9All lessons in this course
- Structs vs Classes, properties & inits
- Stored vs computed properties, observers
- Initializers & deinit (classes)