【问题标题】:Class does not confirm to Protocol CBPeripheralManagerDelegate类未确认协议 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")
        }
    }
}

【问题讨论】:

    标签: ios xcode swift core-bluetooth


    【解决方案1】:

    这是一个误导性的错误信息。您不能在实例变量的初始赋值中引用self。当实例变量被实例化时,self 不一定包含任何有意义的东西,所以 Swift 不允许使用 self。

    你可以使用惰性变量:

    lazy var myPeripheralManager: CBPeripheralManager = {
        return CBPeripheralManager(delegate:self, queue: nil)
    }()
    

    当你第一次访问myPeripheralManager 时会调用这个块,它会为你创建对象。

    【讨论】:

      猜你喜欢
      • 2021-02-23
      • 1970-01-01
      • 2017-01-10
      • 2018-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多