我有这样的代码:
@IBInspectable var myProperty: String? {
set(newValue) {
//logic for setter
}
get {
return myProperty
}
}
上面的代码生成警告:
所以我按照建议修复了代码:
@IBInspectable var myProperty: String? {
set(newValue) {
//logic for setter
}
get {
return self.myProperty
}
}
该问题将得到解决,但是在应用程序构建阶段我正在使用SwiftFormat。
SwiftFormat会自动删除自我关键字,在此将其视为不必要。
我看到两个解决方案:
最好的选择是什么?
最佳答案
首先,您的代码不正确。添加self
将无济于事。
您创建的是无限递归。调用myProperty
的getter时,您将使用return myProperty
再次调用该getter。在getter中,您再次返回myProperty
,这再次调用了getter。这将一直持续下去,直到堆栈溢出为止。
如果只需要自定义 setter ,则可以尝试willSet
或didSet
。
var myProperty: String {
willSet(newValue) {
// do stuff
}
}
// or
var myProperty: String {
didSet(oldValue) {
// do stuff
}
}
关于swift - 警告: Attempting to access 'myProperty' within its own getter vs SwiftFormat,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46380240/