Skip to content

Latest commit

 

History

History
66 lines (52 loc) · 1.93 KB

PropertyObservers.md

File metadata and controls

66 lines (52 loc) · 1.93 KB

Property observers (только для структур и классов)

  1. ✔️ When should you use willSet rather than didSet?
  2. ✔️ Properties
  • willSet - вызывается когда свойство собирается быть изменененным (до его изменения). В willSet Swift предоставляет вашему коду специальное значение, называемое newValue, которое содержит новое значение свойства.

  • didSet - вызывается когда свойство уже изменено (после его изменения). В didSet вам дается oldValue для представления предыдущего значения.

! Property observers не могут быть назначены константам (let):

 let awayTeamScore: Int {
     didSet { print("Boo - they scored!") }
}

Пример для понимания:

class Counter {
    var count: Int {
        willSet {
            print("willSet", count)
            count += 2
            print("willSetAfter", count)
        }
        
        didSet {
            print("didSetbefore", count)
            count += 200
            print("didSetAfter", count)
        }
    }
    
    init(count: Int) {
        self.count = count
    }
}

print("count = 2000")
let test = Counter (count: 2000)

print("count += 20")
test.count += 20

print("count +=1")
test.count += 1
print("count += 1 end")

print("result", test.count)

//count = 2000
//count += 20
//willSet 2000
//willSetAfter 2002
//didSetbefore 2020
//didSetAfter 2220
//count +=1
//willSet 2220
//willSetAfter 2222
//didSetbefore 2221
//didSetAfter 2421
//count += 1 end
//result 2421