类未确认协议 CBPeripheralManagerDelegate
Posted
技术标签:
【中文标题】类未确认协议 CBPeripheralManagerDelegate【英文标题】:Class does not confirm to Protocol CBPeripheralManagerDelegate 【发布时间】:2015-03-17 12:08:30 【问题描述】:我是 ios 快速开发的新手,我正在实现一个 PeripheralHandler 类,我在其中初始化 CBPeripheralManager 的一个实例。我已经实现了所需的委托方法,但仍然显示错误'Type PeripheralHandler ->() -> PeripheralHandler!' does not confirm to CBPeripheralManagerDelegate.
import Foundation
import CoreBluetooth
class PeripheralHandler : NSObject, CBPeripheralManagerDelegate
var myPeripheralManager = CBPeripheralManager(delegate:self, queue: nil)
func peripheralManagerDidUpdateState(peripheral: CBPeripheralManager!)
println("peripheralManagerDidUpdateState called !!!")
switch peripheral.state
case CBPeripheralManagerState.PoweredOff:
println("BLE OFF")
case CBPeripheralManagerState.PoweredOn:
println("BLE ON")
case CBPeripheralManagerState.Unknown:
println("NOT RECOGNIZED")
case CBPeripheralManagerState.Unsupported:
println("BLE NOT SUPPORTED")
case CBPeripheralManagerState.Resetting:
println("BLE NOT SUPPORTED")
default:
println("Error")
【问题讨论】:
【参考方案1】:这是一个误导性的错误信息。您不能在实例变量的初始赋值中引用self
。当实例变量被实例化时,self 不一定包含任何有意义的东西,所以 Swift 不允许使用 self。
你可以使用惰性变量:
lazy var myPeripheralManager: CBPeripheralManager =
return CBPeripheralManager(delegate:self, queue: nil)
()
当你第一次访问myPeripheralManager
时会调用这个块,它会为你创建对象。
【讨论】:
以上是关于类未确认协议 CBPeripheralManagerDelegate的主要内容,如果未能解决你的问题,请参考以下文章