警告:试图访问“myProperty”#39;在它自己的getter vs SwiftFormat中

时间:2017-09-23 13:43:37

标签: swift getter

我有这样的代码:

@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 关键字,在此处将其视为不必要。

我看到两个解决方案:

  1. 关闭SwiftFormat中的 redundantSelf 规则。
  2. 修改(如何?)编译器和SwiftFormat可接受的代码。
  3. 最佳选择是什么?

1 个答案:

答案 0 :(得分:4)

您的代码首先是错误的。添加self无济于事。

您创建的是无限递归。当myProperty的getter被调用时,你return myProperty,再次调用getter。在getter中你再次返回myProperty,这会再次调用getter。这将一直持续到堆栈溢出为止。

如果您只想要自定义设置器,可以尝试willSetdidSet

var myProperty: String {
    willSet(newValue) {
        // do stuff
    }
}

// or

var myProperty: String {
    didSet(oldValue) {
        // do stuff
    }
}