gpt4 book ai didi

ios - 类不符合 CBPeripheralManager Delegate 协议(protocol)

转载 作者:行者123 更新时间:2023-11-28 13:15:40 24 4
gpt4 key购买 nike

我是 IOS 快速开发的新手,我正在实现一个类 PeripheralHandler,我正在其中初始化 CBPeripheralManager 的一个实例。我已经实现了所需的委托(delegate)方法,但它仍然显示错误 'Type PeripheralHandler ->() -> PeripheralHandler!'不向 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")
}
}
}

最佳答案

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

你可以使用惰性变量:

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

当您第一次访问 myPeripheralManager 时将调用此 block ,它会为您创建对象。

关于ios - 类不符合 CBPeripheralManager Delegate 协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29098702/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com