我应该在swift的getter方法中返回什么

use*_*829 4 swift swift3

var userState: UserState {
    get {
        return userState
    }
    set {
        print("\(self.userState)")
    }
}
Run Code Online (Sandbox Code Playgroud)

返回userState会导致无限循环.我对getter方法不感兴趣,只想在getter中返回属性的值.我宁愿自定义setter方法.

das*_*ght 7

如果您想覆盖一个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)