2016-09-28 4 views
7

Я недавно был вынужден обновить до Swift 3.0, и похоже, что преобразование Xcode не проделало отличную работу. К счастью, я могу решить большинство проблем вручную, однако меня немного смущает.Является ли это переопределением метода или нет?

Эта линия, что отменяют метод canBecomeFirstResponder в uiController работали перед обновлением до Swift 3.0:

override func canBecomeFirstResponder() -> Bool { 
    return true 
} 

Однако, теперь он возвращает ошибку:

Method does not override any method from its superclass.

Однако, удаление override немного Безразлично Похоже, что это исправление, так как оно вызывает другую ошибку, которая, как представляется, противоречит предыдущей:

Method 'canBecomeFirstResponder()' with Objective-C selector 'canBecomeFirstResponder' conflicts with getter for 'canBecomeFirstResponder' from superclass 'UIResponder' with the same Objective-C selector

На самом деле происходит переопределение? Почему Xcode дает мне смешанные сообщения здесь?

Для справки, я посмотрел this question, и хотя он очень похож, речь идет о классе, и речь идет о методе. Чтобы быть в безопасности, я попытался использовать решение этого вопроса, и он еще раз сломал вещи и поднял те же ошибки.

ответ

22

canBecomeFirstResponder был изменен с помощью метода Swift 2.2 на объект в Swift 3.0. Это означает, что вы должны изменить свой код, чтобы переопределить его как свойство вместо метода.

override var canBecomeFirstResponder: Bool { return true } 
2

Быстрый учебник, чтобы узнать себя:

  • Mark/выбрать/выделить canBecomeFirstResponder
  • Пресс ⌘C
  • Нажмите ⇧⌘0 (ноль не O), чтобы получить окно документации ,
  • Пресс ⌘V
  • Пресс (Обратно)

Теперь вы увидите объявление

var canBecomeFirstResponder: Bool { get } 

ли вы видите разницу?

+1

Извините, что задал немой вопрос, но что вы подразумеваете под «отметьте» его? – Vemonus

+0

Я имею в виду выделить/выделить его. – vadian

+0

Краткое руководство: после его выбора вы должны нажать ⌘C или выбрать «Редактирование»> «Копировать», чтобы скопировать его в буфер обмена, если вы хотите вставить его позже. –

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