我有这样的代码:
@IBInspectable var myProperty: String? {
set(newValue) {
//logic for setter
}
get {
return myProperty
}
}
以上代码生成警告:
试图访问“myProperty”'在自己的吸气剂中。访问' self' 明确地沉默这个警告。
所以我按照建议修改了代码:
@IBInspectable var myProperty: String? {
set(newValue) {
//logic for setter
}
get {
return self.myProperty
}
}
问题将得到解决,但我在应用程序构建阶段使用SwiftFormat。 SwiftFormat会自动删除 self 关键字,在此处将其视为不必要。
我看到两个解决方案:
最佳选择是什么?
答案 0 :(得分:4)
您的代码首先是错误的。添加self
无济于事。
您创建的是无限递归。当myProperty
的getter被调用时,你return myProperty
,再次调用getter。在getter中你再次返回myProperty
,这会再次调用getter。这将一直持续到堆栈溢出为止。
如果您只想要自定义设置器,可以尝试willSet
或didSet
。
var myProperty: String {
willSet(newValue) {
// do stuff
}
}
// or
var myProperty: String {
didSet(oldValue) {
// do stuff
}
}