var userState: UserState {
get {
return userState
}
set {
print("\(self.userState)")
}
}
Run Code Online (Sandbox Code Playgroud)
返回userState会导致无限循环.我对getter方法不感兴趣,只想在getter中返回属性的值.我宁愿自定义setter方法.
如果您想覆盖一个setter,但保持您的属性可读,那么您需要创建一个变量来"回"该属性:
private var storedUserState: UserState
var userState: UserState {
get {
return storedUserState
}
set {
print("Before: \(self.storedUserState)")
storedUserState = newValue
print("After: \(self.storedUserState)")
}
}
Run Code Online (Sandbox Code Playgroud)
如果您想自定义setter方法,但希望该属性保持存储,请使用属性观察器而不是覆盖访问器:
var userState: UserState = nil {
willSet(newState) {
print("About to set userState: \(newState)")
}
didSet {
print("Finished: new=\(userState), old=\(oldValue)")
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
918 次 |
| 最近记录: |