在GroupOperation
的自定义子类中,我试图重写operationDidFinish()
。当我试图在子类中实现该函数时,会收到以下错误消息:
方法不重写其超类中的任何方法
如果删除override
关键字,我将得到
带有Objective-C选择器的“operationdidfish(:withErrors:)”方法
'operationDidFinish:withErrors:'与方法冲突
“operationdidfish(:withErrors:)”来自超类“GroupOperation”
使用相同的Objective-C选择器
奇怪。我很确定我的方法签名是正确的,并且我没有试图重载obj-c方法,所以一切都应该很好。给什么?
作为参考,我的班级是这样的:
class ServerAuthenticationOperation: GroupOperation {
// properties... initializer stuff...
override func operationDidFinish(operation: NSOperation, withErrors errors: [NSError]) {
print("I finished!")
}
}
最佳答案
我猜你用的是Swift 2。
Objective-C不支持方法重载,因此必须为方法选择其他名称。或者,您可以尝试以下选项:
使用@objc(newMethodName:)
重命名方法
使用@nonobjc
编辑:
你提供的回购协议似乎有效,你可以在这里查看。https://www.dropbox.com/s/hb07u3hyjhjuews/OverrideTest.zip?dl=0