swift 中覆盖和非覆盖功能之间的问题

Issue between override and non-override function in swift

抱歉,我不太擅长解释这些东西。基本上我有下面的函数来处理远程控制事件。

UIApplication.sharedApplication().beginReceivingRemoteControlEvents()
override func remoteControlReceivedWithEvent(event: UIEvent) {
    if event.type == UIEventType.RemoteControl {
        if event.subtype == UIEventSubtype.RemoteControlPlay {
            stream.play()
        } else if event.subtype == UIEventSubtype.RemoteControlPause {
            stream.stop()
        } else if event.subtype == UIEventSubtype.RemoteControlTogglePlayPause {
            toggle()
        }
    }
}

基本上,当我使用术语 "override"(如上所示)时,我得到了错误

"Method does not override any method from its superclass.

如果我省略 "override",我会得到错误:

"Method 'remoteControlReceivedWithEvent' with Objective-C selector 'remoteControlReceivedWithEvent:' conflicts with method "remoteControlReceivedWithEvent" from superclass "UIResponder" with the same Objective-C selector.

我对这一切都很陌生,所以我不太明白问题出在哪里。有人可以解释如何解决这个问题吗?如果您需要更多代码或其他内容,请告诉我。

我需要使用更多代码来进行设置吗?

UIResponder 方法签名与您的函数实现不匹配。 UIResponder 有可选的事件如下: func remoteControlReceibedWithEvent(_ event: UIEvent?)

因此它不能重写,因为没有带有非可选参数的函数,但是如果你删除重写,它将与 ObjC 实现冲突,因为选择器名称是相同的。