2015-12-18 50 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