ios - 如何遵守 CBCentralManagerDelegate 协议(protocol)?

标签 ios swift bluetooth

我正在尝试初始化中央管理器实例以制作具有蓝牙连接的应用。

这是我的部分代码:

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/

相关文章:

Swift Realm 通过列表属性元素查询

algorithm - 如何使用 Triangulation 确定具有 3 个节点的用户的位置?

c# - 蓝牙拨号与 32feet.net 和 c#

ios - 通过 Alamofire 调用 API 但遇到一些问题

javascript - chrome.bluetooth.write 错误? IO返回码 : 3758097088

ios - SwiftUI:无法将图像对齐到ZStack的顶部

iOS Swift 从网络流播放音频 (aac)

ios - 我应该在 UIView 子类中的哪里安装自动布局约束?

ios - Objective-C 禁用 iOS BLE 配对消息

ios - 我可以做什么来调整文本大小而不在 UIPickerView 中显示...?