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

时间:2017-06-10 06:03:07

标签: ios swift xcode swift-protocols

我正在使用Xcode和swift 3为我开发项目。我想做的就像下面一样。

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

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

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

1 个答案:

答案 0 :(得分:1)

见:

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

您需要实现协议功能才能符合该协议。没有它,协议一致性是没用的,你不觉得吗? :)无论如何,通过扩展协议扩展类总是更好,如下所示:

extension SCViewController: AVCaptureMetadataOutputObjectsDelegate{
    //code here
}

无论如何更广泛的描述:正如你所看到的,代理实现为“superProtocol”NSObjectProtocol,

看到这个:

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

所以只需实现NSObjectProtocol函数,你就可以了......快乐编码:)

编辑:在意识到我是一个完全白痴并忘记基本的事情之后 - >这应该工作,因为UIViewController类是UIResponder的子类,它是NSObject的子类,因此类名或类似的东西可能有问题......会试图强迫编译器做一些奇怪的事情它会做什么。像这样:

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

顺便说一句,这绝对有用。