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] 举报,一经查实,本站将立刻删除。