2015-12-18 9 views
1

В пользовательском подклассе GroupOperation я пытаюсь переопределить operationDidFinish(). При попытке реализовать функцию в своем подклассе, я получаю сообщение об ошибке:Swift: невозможно переопределить operationDidFinish из класса GroupOperation

метод не переопределяет любой метод из суперкласса

Если удалить override ключевое слово, я получаю

метод 'operationDidFinish (: withErrors :)' с Objective-C 'селекторных operationDidFinish: withErrors:' конфликты с методом «operationDidFinish (: withErrors :)»от суперкласса '' GroupOperation с тем же селектором Objective-C

странности. Я почти уверен, что моя подпись метода присутствует, и я не пытаюсь перегрузить метод obj-c, поэтому все должно быть хорошо. Что дает?

Для справки, мой класс выглядит следующим образом:

class ServerAuthenticationOperation: GroupOperation { 

    // properties... initializer stuff... 

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

ответ

0

Я полагаю, вы используете Swift 2.

Objective-C не поддерживает перегрузку методов, так что вы должны выбрать другое имя для вашего метода. Или, вы можете попробовать следующие варианты:

  1. Переименовать метод с использованием @objc(newMethodName:)
  2. Использование @nonobjc

Edit: Это кажется работает для вас репо при условии, что вы можете проверить его здесь. https://www.dropbox.com/s/hb07u3hyjhjuews/OverrideTest.zip?dl=0

+0

Я на самом деле пытаюсь переопределить функцию из класса быстрого доступа. См. Источник для этого класса здесь: https://github.com/pluralsight/PSOperations/blob/master/PSOperations/GroupOperation.swift – corykon

+0

Странно. Я клонировал репо и без проблем добавил ваш метод. – emrekyv

+0

dang. Я еще поиграю, должно быть, сделал что-то еще не так. спасибо за проверку – corykon

Смежные вопросы