我正在尝试初始化中央管理器实例以制作具有蓝牙连接的应用。
这是我的部分代码:
class ViewController: UIViewController, CBCentralManagerDelegate {
var myCentralManager = CBCentralManager(delegate: self, queue: nil) //error on this line
func centralManagerDidUpdateState(central: CBCentralManager!) {
}
我得到一个错误:
"Type 'ViewController -> () -> ViewController!' does not conform to protocol 'CBCentralManagerDelegate'
协议(protocol)唯一需要的方法是我添加的centralManagerDidUpdateState()
,为什么会报错?
最佳答案
错误消息有点欺骗性,会让您远离实际问题。问题是您在存储属性的初始化程序中访问 self
,您不能这样做。
一种解决方法是简单地声明属性而不对其进行初始化,然后将对变量的赋值移动到某个地方,例如 View Controller 的初始化程序,或 View Controller 的生命周期方法之一,如 viewDidLoad。
关于ios - 如何遵守 CBCentralManagerDelegate 协议(protocol)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28134047/