2015-12-18 26 views
1

GroupOperation的自定义子类中,我试图覆盖operationDidFinish()。当我试图实现我的子类的功能,我得到这个错误信息:Swift:无法覆盖GroupOperation类中的operationDidFinish

方法不会覆盖任何方法,其超

如果我删除了override关键字,我得到

方法 'operationDidFinish(:withErrors :)' 与目标C选择 'operationDidFinish:withErrors:' 与方法 “operationDidFinish冲突(:withErrors“从超类的GroupOperation' 具有相同的目标C选择

怪诞:)。我很确定我的方法签名是现货,我不想重载一个obj-c方法,所以一切都会好的。是什么赋予了?

仅供参考,我的课是这样的:

class ServerAuthenticationOperation: GroupOperation { 

    // properties... initializer stuff... 

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

回答

0

我假设你正在使用雨燕2.

的Objective-C不支持方法重载,所以你要选择一个不同的名称为你的方法。或者,你可以尝试以下几种:

  1. 使用@objc(newMethodName:)
  2. 使用@nonobjc

编辑重命名方法: 这似乎为你工作所提供的回购,您可以点击此处查看。 https://www.dropbox.com/s/hb07u3hyjhjuews/OverrideTest.zip?dl=0

+0

我实际上试图从一个swift类重写一个函数。看到这个类的来源:https://github.com/pluralsight/PSOperations/blob/master/PSOperations/GroupOperation.swift – corykon

+0

奇怪。我克隆了回购并且没有任何问题地添加了你的方法。 – emrekyv

+0

dang。我会再玩一些,一定是做错了什么。感谢您的检查 – corykon