【问题标题】:Swift: Unable to override operationDidFinish from GroupOperation classSwift:无法从 GroupOperation 类覆盖 operationDidFinish
【发布时间】:2015-12-18 23:57:55
【问题描述】:

GroupOperation 的自定义子类中,我试图覆盖operationDidFinish()。当我尝试在我的子类中实现该函数时,我收到以下错误消息:

方法不会覆盖其超类中的任何方法

如果我删除 override 关键字,我会得到 ​​p>

使用 Objective-C 选择器的方法 'operationDidFinish(:withErrors:)' 'operationDidFinish:withErrors:' 与方法冲突 来自超类“GroupOperation”的“operationDidFinish(:withErrors:)” 使用相同的 Objective-C 选择器

奇怪。我很确定我的方法签名是正确的,而且我不想重载 obj-c 方法,所以一切都应该很好。什么给了?

作为参考,我的课程如下所示:

class ServerAuthenticationOperation: GroupOperation {

     // properties... initializer stuff...

     override func operationDidFinish(operation: NSOperation, withErrors errors: [NSError]) {
          print("I finished!")
     }
}

【问题讨论】:

    标签: ios swift nsoperation


    【解决方案1】:

    我假设你使用的是 Swift 2。

    Objective-C 不支持方法重载,因此您必须为方法选择不同的名称。或者,您可以尝试以下选项:

    1. 使用@objc(newMethodName:)重命名方法
    2. 使用@nonobjc

    编辑: 它似乎适用于您提供的 repo,您​​可以在此处查看。 https://www.dropbox.com/s/hb07u3hyjhjuews/OverrideTest.zip?dl=0

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    相关资源
    最近更新 更多