【发布时间】:2015-10-15 06:22:59
【问题描述】:
我正在开发一个 iPhone 应用程序,使用 swift 通过蓝牙与另一台设备通信。我的问题是,每当变量从 CoreBluetooth 接收到新数据时,我想在另一个类上触发一个函数(更改显示值)。有人可以帮忙吗!
【问题讨论】:
标签: xcode swift function core-bluetooth
我正在开发一个 iPhone 应用程序,使用 swift 通过蓝牙与另一台设备通信。我的问题是,每当变量从 CoreBluetooth 接收到新数据时,我想在另一个类上触发一个函数(更改显示值)。有人可以帮忙吗!
【问题讨论】:
标签: xcode swift function core-bluetooth
这可以通过两种方式之一完成,使用 KVO 或 NSNotificationCenter。在这种情况下,最好使用 KVO,因为您只监听一个属性。
【讨论】:
-我更喜欢使用Swift 的方式做事,使用didSet
示例:
var value: Int?
{
didSet
{
print("I just got changed")
}
}
value = 10
- 在Swift 中,一旦model 发生变化,我们就会使用didSet 更新用户界面。
- 在上面的示例中,只要将变量 value 设置为 10,就会触发其 didSet。
-同样你可以用它来处理蓝牙值
【讨论】:
魏
实现委托来执行它
编写协议
protocol ValueChangedDelegate {
func valueChanged(nValue:Int)
}
并在需要新值的视图控制器中实现该协议
class YourCustomClass: ValueChangedDelegate
{
func valueChanged(nValue:Int) {
print("value changed")
}
}
然后实现一个delegate,并将delegate设置为self,当值改变时调用该方法,那么所有实现协议的类都会收到新的值
你可以参考这个 Delegate in Swift-language
【讨论】: