我在一个函数中有一个简单的布尔变量,在它上面设置了一个观察者来检查它何时发生变化:
var userValid: Bool{
didSet{
let valid=userValid ? "valid" : "not valid"
print("uservalid changed to \(valid)")
}
}
我在 init 中将其设置为 false,然后在程序中将其设置为 true:初始化器被调用两次,一次用于类,一次用于子类,但我总是检查类中的值。所以我看到观察者中的变量设置为true,但是当我在另一个函数中检查它时,我发现它为false,而观察者不再被调用。
当它出现时,问题似乎源于我初始化了两次类的事实:一次是单例,另一次是:
init?(coder aDecoder: NSCoder)
当然,我用以下方式初始化单例:
public class func sharedMapDelegate() -> MapDelegate {
struct Static {
static let instance : MapDelegate = MapDelegate()
}
return Static.instance
}
如何返回从 initWithCoder 生成的值而不是创建一个新值?