在Swift中,有没有更好的方法来初始化“get”唯一变量?

时间:2015-03-13 18:04:46

标签: ios swift accessor

假设我有一个类MyClass,它可以处于有效状态或无效状态。所以我用一个名为isValid的bool跟踪这个。我想将此值初始化为false,直到调用类initialize函数为止。 initialize(以及相应的reset函数)可以直接更改isValid bool的值。这就是我到目前为止所建立的:

class MyClass {

  private var _isValid: Bool = false
  var isValid: Bool {
    get { return _isValid }
  }

// any required init functions

  func initialize() {
    // init stuff
    _isValid = true
  }

  func reset() {
    // reset stuff
    _isValid = false
  }

}

这是最好的方法吗,或者有什么方法可以删除第二个私有var并以某种方式只允许类函数修改一个只读公共面向变量?

1 个答案:

答案 0 :(得分:11)

让你的二传手专用。请参阅Access Control

class MyClass {

    private(set) var isValid = false

    func initialize() {
        // init stuff
        self.isValid = true
    }

    func reset() {
        // reset stuff
        self.isValid = false
    }        
}