每当静态变量值改变时触发一个函数

Firing a function whenever static variable value changed

我正在开发一个 iPhone 应用程序,使用 swift 通过蓝牙与另一台设备通信。我的问题是,每当变量从 CoreBluetooth 接收到新数据时,我想在另一个 class(更改显示值)上触发一个函数。有人可以帮忙吗!

这可以通过两种方式之一完成,使用 KVO 或 NSNotificationCenter。在这种情况下,最好使用 KVO,因为您只听一个 属性.

执行委托

编写协议

protocol ValueChangedDelegate {
  func valueChanged(nValue:Int)
}

并在需要新值的视图控制器中实施该协议

class YourCustomClass: ValueChangedDelegate 
{
  func valueChanged(nValue:Int) {
    print("value changed")
  }
}

然后实现一个delegate,将delegate设置为self,并在值变化时调用方法,那么所有实现协议的类都会收到新的值

你可以参考这个 Delegate in Swift-language

- 我更喜欢使用 didSet

Swift 的方式做事

示例:

var value: Int?
{
    didSet
    {
        print("I just got changed")
    }
}

value = 10

-Swift 中,我们使用 didSet 在 [=15= 发生变化时立即更新 UI ].

- 在上面的示例中,一旦变量 value 设置为 10,它的 didSet 就会被触发。

- 同样你可以用它来处理蓝牙值