Swift Class Extension - нераспознанный селектор отправлен на экземпляр

При создании расширения класса для базового класса я получаю unrecognized selector sent to instance при использовании следующего:

extension NSURLSessionDataTask: Taskable {

  func isRunning() -> Bool {
    return state == .Running
  }

}

Ошибка:

[__NSCFLocalDataTask isRunning]: unrecognized selector sent to instance 0x7fa93bdc07d0

Я пытаюсь создать общий интерфейс задач, чтобы я мог использовать различные виды классов, такие как операции и задачи сессий, есть что-то, чего я здесь не хватает?

2 ответа

Решение

Многие из классов Какао являются "кластерами классов", что означает, что вы можете получить тот, который вы просили. NSCFLocalDataTask является частным классом и похоже, что он не наследуется от NSURLSessionDataTask, Попробуйте переместить ваше расширение в NSURLSessionTask,

Почему это может произойти: свойства Objective C BOOL, начинающиеся с "is", могут обрабатываться по-разному. Может случиться так, что ваш func экспортируется в Objective-C как "рабочий" метод, а не как "isRunning".

Другие вопросы по тегам