为什么我的控制器不符合 NSObjectProtocol?

Why doesn’t my controller conform to NSObjectProtocol?

我正在使用 Xcode 和 swift 3 为我开发一个项目。我正在尝试做的是如下所示。

class SCViewController: UIViewController, AVCaptureMetadataOutputObjectsDelegate{
    //code here
}

但这给了我一个错误,即 SCViewController 不符合协议 NSObjectProtocol.

我想同时符合 UIViewController 和 AVCaptureMetadataOutputObjectsDelegate。请帮我解决这个问题。

看到这个:

https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Protocols.html

您需要实现协议功能才能符合该协议。没有它,协议一致性就没有用了,你不觉得吗? :) 无论如何,通过扩展协议扩展 class 总是更好,像这样:

extension SCViewController: AVCaptureMetadataOutputObjectsDelegate{
    //code here
}

无论如何更广泛的描述:如您所见,委托实现为 "superProtocol" NSObjectProtocol,

看到这个:

https://developer.apple.com/documentation/avfoundation/avcapturemetadataoutputobjectsdelegate

所以只要实现 NSObjectProtocol 函数就可以了...编码愉快 :)

编辑:意识到我是个彻头彻尾的白痴并忘记了本质的东西后 -> 这应该可以工作,因为 UIViewController class 是 subclass 到 UIResponder 的 subclass到 NSObject,因此 class 名称或类似的名称可能存在问题...将尝试强制编译器做它会做的奇怪事情...像这样:

extension SCViewController: NSObject, AVCaptureMetadataOutputObjectsDelegate{
    //code here
}

顺便说一句,上面的内容应该绝对有效。