What is the difference between willSet - didSet, and get - set, when working with this inside a property?
From my
var variable1 : Int = 0 { //It's a store property
didSet {
print (variable1)
}
willSet(newValue) {
..
}
}
var variable2: Int { //It's a Computed Proprties
get {
return variable2
}
set (newValue){
}
}
For detail info of Store property and computed property
So when you are trying to assign the value into variable at that assigning time come the concept of 'didSet' & 'willSet'. As @Maxim says
Example of 'willSet' & 'didSet' :
class Number {
var variable1 : Int = 0 {
didSet{
print("didSet called")
}
willSet(newValue){
print("willSet called")
}
}
}
print("we are going to add 3")
Number().variable1 = 3
print("we added 3")
//o/p:
we are going to add 3
willSet called
didSet called
we added 3
And generally when two property are dependent at that time 'get' & 'set' used. (It's also used in protocol this is different concept.)
Example of 'get' & 'set':
class EquilateralTriangle{
var sideLength: Double = 0.0
init(sideLength: Double){
self.sideLength = sideLength
}
var perimeter: Double {
get {
return 3.0 * sideLength
}
set {
sideLength = newValue / 3.0
}
}
}
var triangle = EquilateralTriangle(sideLength: 3.0)
print(triangle.perimeter) //o/p: 9.0
triangle.perimeter = 12.0
print(triangle.sideLength) //o/p: 4.0