【问题标题】:Firing a function whenever static variable value changed每当静态变量值更改时触发函数
【发布时间】:2015-10-15 06:22:59
【问题描述】:

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

【问题讨论】:

    标签: xcode swift function core-bluetooth


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      -我更喜欢使用Swift 的方式做事,使用didSet

      示例:

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

      -Swift 中,一旦model 发生变化,我们就会使用didSet 更新用户界面。

      - 在上面的示例中,只要将变量 value 设置为 10,就会触发其 didSet

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

      【讨论】:

        【解决方案3】:

        实现委托来执行它

        编写协议

        protocol ValueChangedDelegate {
          func valueChanged(nValue:Int)
        }
        

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

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

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

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

        【讨论】:

        • 是的,我尝试添加委托方法,但没有触发函数。
        • 我不知道我错过了哪一部分
        猜你喜欢
        • 1970-01-01
        • 2020-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-27
        • 2020-06-10
        • 2019-12-29
        相关资源
        最近更新 更多