微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

var userState: UserState {
    get {
        return userState
    }
    set {
        print("\(self.userState)")
    }
}

返回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)")
    }
}

如果您想自定义setter方法,但希望该属性保持存储,请使用属性观察器而不是覆盖访问器:

var userState: UserState = nil {
    willSet(newState) {
        print("About to set userState: \(newState)")
    }
    didSet {
        print("Finished: new=\(userState),old=\(oldValue)")
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐