感觉很愚蠢,因为不久前我有一个非常相似的问题:
init CBCentralManager: Type of expression is ambiguous without more context
这次,我将CBPeripheralManager
内的viewDidLoad
实例化为iVar(尝试了'lazy'和'!'修饰符)。
我符合委托(在类型上和作为扩展名),但是当我尝试为委托参数分配self
而不是nil
时,仍然遇到相同的错误。 / p>
class vc: UIViewController {
var peripheralManager: CBPeripheralManager!
override func viewDidLoad() {
super.viewDidLoad()
peripheralManager = CBPeripheralManager(delegate: self, queue: nil)
}
}
extension vc: CBPeripheralDelegate { }
如何在此处获得自我作为实例,或者实际问题是什么?
答案 0 :(得分:3)
您的扩展名符合错误的协议。
更改:
extension vc: CBPeripheralDelegate
收件人:
extension vc: CBPeripheralManagerDelegate
然后,您必须至少实现最少的必需协议方法。