类未确认协议 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的主要内容,如果未能解决你的问题,请参考以下文章

Hazelcast 谓词/ SQL 查询类未找到

基类未定义,但包含其标头

基类未捕获 C++ 异常

错误 C2504:'BASECLASS':基类未定义

Tailwind css 类未在 Storybook 构建中显示

环境大小类未更新