带有委托的初始化:表达式类型在没有更多上下文的情况下不明确

init with delegate: Type of expression is ambiguous without more context

感觉很愚蠢,因为不久前我有一个非常相似的问题:

这次我将 viewDidLoad 内的 CBPeripheralManager 实例化为 iVar(同时尝试了 'lazy' 和 '!' 修饰符)。

我已经符合委托(类型和扩展),但是当我尝试为委托参数分配 self 而不是 nil 时,我仍然遇到相同的错误.

class vc: UIViewController {
    var peripheralManager: CBPeripheralManager!

    override func viewDidLoad() {
        super.viewDidLoad()            
        peripheralManager = CBPeripheralManager(delegate: self, queue: nil)
    }
}

extension vc: CBPeripheralDelegate { }

如何在此处获取 self 作为实例, 或者实际问题是什么?

您的扩展符合错误的协议。

变化:

extension vc: CBPeripheralDelegate

至:

extension vc: CBPeripheralManagerDelegate

然后您必须至少实现所需的最少协议方法。